【问题标题】:$stateParams empty ui router$stateParams 空 ui 路由器
【发布时间】:2016-12-01 17:09:07
【问题描述】:

我有这样的状态:

.state('home.deletemsg', {
  views: {
  "contentworker@": {
    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

【问题讨论】:

    标签: javascript angularjs routing angular-ui-router angularjs-routing


    【解决方案1】:

    url 选项应该直接出现在状态定义上,而不是在 stateviews 对象内。但即使是你的控制器也不应该像你配置你的状态那样被调用。

    代码

    .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
       }
    }
    

    【讨论】:

    • 该死,你是对的。我不知道我是怎么错过的:)
    • 不用担心,会发生这种情况。甚至您的控制器也应该被调用..我觉得您在代码中做了其他事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多