2015-06-09 3 views
3

мне нужно, чтобы получить некоторые данные контента на мой контроллер:Разрешающая состояние в AngularJS

state('admin.businesses.employees.all', { 
    resolve: { 
     executorsListTitle: 'All employees', 
     executorsEmptyListMessage: 'Add the first employee' 
    }, 
    url: '/all', 
    controller: 'ExecutorsController', 
    templateUrl: 'templates/admin/executors/index.html' 
}) 

И код контроллера:

module.controller(
    'ExecutorsController', 
    [ 
     '$scope', '$rootScope', '$state', 
     '$stateParams', '$modal', 'executorsListTitle', 
     'executorsEmptyListMessage', 'Executor', 
     function($scope, $rootScope, $state, $stateParams, $modal, executorsListTitle, executorsEmptyListMessage, Executor) { 
      // Some code 
     } 
) 

Но когда я пытаюсь войти в это состояние я не могу сделайте это - нажатие кнопки ничего не делает; если я удалю разрешение из описания состояния, он работает хорошо. Что я делаю неправильно? Благодаря!

ответ

6

Решения государственного аппарата предполагают ключ и завод. doc states:

  • ключ - {строка}: имя зависимостью, который будет введен в контроллер.
  • завод - {строка | функция}

И когда вы предоставляете строку завода:

Если строка, то она является псевдонимом для службы.

Если вы хотите, чтобы вернуть строку, вы можете сделать следующее:

state('admin.businesses.employees.all', { 
    resolve: { 
     executorsListTitle: function() { 
      return 'All employees'; 
     }, 
     executorsEmptyListMessage: function() { 
      return 'Add the first employee'; 
     }, 
    }, 
    url: '/all', 
    controller: 'ExecutorsController', 
    templateUrl: 'templates/admin/executors/index.html' 
}) 

Если вы используете статические данные (строки вы разрешающие к), вы можете также использовать свойство пользовательских данных :

state('admin.businesses.employees.all', { 
    data: { 
     executorsListTitle: 'All employees', 
     executorsEmptyListMessage: 'Add the first employee' 
    }, 
    url: '/all', 
    controller: 'ExecutorsController', 
    templateUrl: 'templates/admin/executors/index.html' 
}) 

Если вы используете этот метод, в контроллере вы можете получить доступ к данным, как это:

$state.current.data.executorsListTitle 

Вы можете использовать строки непосредственно с помощью этого метода. Here - документ для свойства пользовательских данных.