2016-04-03 7 views
0

私は、$ routeProviderに戸惑って忙しいです。私はコントローラで特定の関数を呼び出して$ routeParamsを与えたい(回避策を見つけたが、望ましくない。新しいコントローラの作成が必要になる)。routeproviderの関数呼び出し(解決を使用していない)

https://docs.angularjs.org/api/ngRoute/provider/$routeProviderはresolve(ただし、$ 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引数は、JavaScriptがクロージャを扱う方法のために、 '$ scope.editEmployee'関数からアクセス可能でなければなりません。コードで間違っているのは、IIFEが実行されていないということだけです。例えば、 '(function(){// ...})();'のように最後の行に角括弧を追加してみてください。 –

答えて

1

の中にemployeeIdが存在することを確認してください。employeeControllerにあり、$scope.editEmployeeメソッドを呼び出すのはなぜですか?

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

これは私の働くフォームです。正確には私が考えていたものではありませんでしたが、それは私のために働いたありがとうございます。 – TestingAssignment

+0

@TestingAssignment喜んで助けました。ようこそ: –

+1

私も助けて! – Nat

関連する問題