2016-04-03 20 views
0

$ routeProvider ile açısal ve yoğun yeni. Bir denetleyicide belirli bir işlevi çağırmak ve $ routeParams vermek istiyorum (bir geçici çözüm buldum, ancak istenmiyor. Yeni bir denetleyici oluşturmayı gerektirir). https://docs.angularjs.org/api/ngRoute/provider/$routeProvider, ($ routeProvider içindeki işlevini istemiyorum) çözümüne başvurur.Ruteprovider işlevini çağırma (çözüm kullanarak değil)

(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); 
     } 
    }); 
}); 

bunu böyle aramak için bir yolu var mı:

(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<<---------------------- 
      }) 
    }); 
})(); 

Bu kontrolör geçerli:

Bu

sorundur?

+0

Bir denetleyicinin işlevine bağımlılık enjekte edemezsiniz. Ayrıca, '$ routeParams' argümanı, JavaScript'in kapanışlarla nasıl başa çıktığı için '$ scope.editEmployee' işlevine erişebilmelidir. Kodla ilgili yanlış olan tek şey, IIFE'nizin çalıştırılmamasıdır, son satıra parantez eklemeyi deneyin, örn: '(function() {// ...})();'. –

cevap

1

Neden $routeParams içinde employeeController'un varlığını kontrol edemiyor ve $scope.editEmployee yöntemini çağırın?

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

Bu bana çalıştı. Tam olarak düşündüğümden değil, ama benim için çalıştı. Teşekkür ederiz – TestingAssignment

+0

@TestingAssignment Memnun kaldım. Hoşgeldin :) –

+1

bana da yardım etti! – Nat