2016-04-03 53 views
0

我是新角度和繁忙的$ routeProvider。我想在一个控制器中调用一个特定的函数,给$ routeParams(我找到了一个解决方法,但并不需要它,它涉及到创建一个新的控制器)。从routeprovider呼叫功能(不使用解决方案)

https://docs.angularjs.org/api/ngRoute/provider/$routeProvider引用解决方案(但我不想在$ routeProvider中的函数)。

这就是问题所在:

(function() { 
angular 
    .module('app', ['ngRoute', 'employee']) 
    .config(function ($routeProvider) { 
     $routeProvider.when('/settings/employees', 
      { 
       templateUrl: 'app/Employee/employee-table.html', 
       controller: 'employeeController' 
      }) 
     $routeProvider.when('/settings/employees/add/form', 
      { 
       templateUrl: 'app/Employee/employee-add-form.html', 
       controller: 'employeeController' 
      }) 
     $routeProvider.when('/settings/employees/edit/:employeeId/form', 
      { 
       templateUrl: 'app/Employee/employee-edit-form.html', 
       controller: 'employeeController', 
       //Call to 'editEmployee' method WITH $routeParams<<---------------------- 
      }) 
    }); 
})(); 

这是控制器:

(function() { 
'use strict'; 

angular 
    .module('employee') 
    .controller('employeeController', function ($scope, $location, $routeParams, employeeFactory) { 
     // Get all employees 
     $scope.getAllEmployees = function() { 
      return employeeFactory.getAllEmployees(); 
     } 

     $scope.getEmployeeById = function (employeeId) { 
      //TODO: IMPLEMENT:  NOT YET IMPLEMENTED! 
     } 

     // Add employee 
     $scope.addEmployee = function (addEmployeeForm) { 
      if (addEmployeeForm.$valid) { 
       employeeFactory.addEmployee($scope.employee); 
      } 
     } 

     // THIS IS THE FUNCTION TO CALL<<--------------------------------------------- 
     $scope.editEmployee = function() { 
      console.log('reached'); 
      if ($routeParams) { 
       console.log($routeParams); 
      } 
     } 

     // Delete given employee 
     $scope.deleteEmployee = function (employee) { 
      employeeFactory.deleteEmployee(employee); 
     } 

     $scope.cancelForm = function() { 
      $scope.go('/settings/employees'); 
     } 

     // Reset the form 
     $scope.resetForm = function() { 
      $scope.employee = {} 
     } 

     // Route to path 
     $scope.go = function (path) { 
      console.log(path); 
      $location.path(path); 
     } 
    }); 
}); 

有没有办法来称呼它?

+0

您不能在控制器的函数中注入依赖项。另外,'$ routeParams'参数应该可以被'$ scope.editEmployee'函数访问,因为JavaScript处理闭包的方式。唯一看起来不对的代码是你的IIFE没有执行,试着在最后一行加上括号,例如'(function(){// ...})();'。 –

回答

1

为什么不能检查employeeId的存在$routeParams里面employeeController并且请拨打$scope.editEmployee方法?

if($routeParams.employeeId){ 
    $scope.editEmployee(); 
} 
+0

这工作形式我。不是我在想什么,但它对我有用。谢谢 – TestingAssignment

+0

@TestingAssignment很高兴帮助。欢迎:) –

+1

帮助我! – Nat