Функция вызова из routeprovider (без использования разрешения)

Я новичок в angular и занят $routeProvider. Я хочу вызвать определенную функцию в контроллере и указать $routeParams (я нашел обходной путь, но это нежелательно. Это связано с созданием нового контроллера).

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

Есть ли способ назвать это так?


person Community    schedule 03.04.2016    source источник
comment
Вы не можете внедрить зависимость в функцию контроллера. Кроме того, аргумент $routeParams должен быть доступен для функции $scope.editEmployee из-за того, как JavaScript работает с замыканиями. Единственное, что кажется неправильным в коде, это то, что ваш IIFE не выполняется, попробуйте добавить скобки в последнюю строку, например: (function () { //... })();.   -  person Tom P.    schedule 03.04.2016


Ответы (1)


Почему нельзя проверить наличие employeeId в $routeParams внутри employeeController и вызвать метод $scope.editEmployee?

if($routeParams.employeeId){
  $scope.editEmployee();
}
person Subash Selvaraj    schedule 03.04.2016
comment
Это сработало со мной. Не совсем то, о чем я думал, но это сработало для меня. Спасибо - person ; 03.04.2016
comment
@TestingAssignment Рад, что это помогло. Добро пожаловать :) - person Subash Selvaraj; 03.04.2016
comment
мне тоже помогло! - person Kabachok; 10.07.2017