2

У меня есть состояние, как например:

.state('home.deletemsg', { 
    views: { 
    "[email protected]": { 
    url: '/delete/:entityname/:id/:redirectstate', 
    templateUrl: "Scripts/proteanapp/templates/delete.html", 
    controller: 'deletectrl', 
    controllerAs: 'del', 
    authenticate: true 
    } 
} 

Тогда в контроллере у меня есть:

return app.controller('deletectrl', ['$scope', '$rootScope', '$stateParams', function ($scope, $rootScope, $stateParams) { 
     debugger; 
     // check for ui router error 
     var del = this; 
     del.entityname = $stateParams.entityname; 
     del.entityid = $stateParams.id; 
    }]); 

Вызов $ state.go из контроллера, как:

$state.go('home.deletemsg', { 'entityname': cd.Customer.Name, 'id': cd.Customer.CustomerID }, { 'location': false, 'notify': true }); 

Но $stateParams пуст, я не понимаю, почему он пуст. Я попытался поставить объект params в состояние, а также разрешить.

$stateParams.entityname //undefined 

$stateParams.id //undefined 

ответ

3

url вариант должен присутствовать там на определении состояния непосредственно, а не внутри views объекта state. Но даже ваш контроллер не должен был называться так, как вы настроили свое состояние.

Код

.state('home.deletemsg', { 
    //url should present here, rather than putting it inside `views` 
    url: '/delete/:entityname/:id/:redirectstate', 
    views: { 
    "contentworker@": { 
    templateUrl: "Scripts/proteanapp/templates/delete.html", 
    controller: 'deletectrl', 
    controllerAs: 'del', 
    authenticate: true 
    } 
} 
+0

блин, ты прав. Я не знаю, как я пропустил это :) – Haris

+1

Не беспокойтесь, это происходит. Даже ваш контроллер должен быть вызван .. Я чувствую, что вы делаете что-то еще в своем коде –

+0

Да, все остальное прекрасно работает, как и должно быть. – Haris

Смежные вопросы