通过`params`进行嵌入式视图ui-router

时间:2015-12-22 17:38:57

标签: angularjs angular-ui-router angular-ui state

我使用UI-Router构建应用程序。我需要在一个页面上有多个视图,所以我使用抽象状态。我试图传递参数" isEmbedded"到owner视图,但遗憾的是它无法正常工作。我想知道它是否因为我将它传递给子视图。当我在console.log($stateParams)ownerCtrl时,它不会显示isEmbedded参数。知道为什么吗?

.state('dog', {
    url: "",
    parent: "dogAbstract",
    views: {
        "owner": {
            templateUrl: 'client/people/views/owner.ng.html',
            controller: 'ownerCtrl',
            params:{
                isEmbedded:true
            }
        }
    }
})

P.S。我想从这个问题中使用params

Angular ui router passing data between states without URL

1 个答案:

答案 0 :(得分:2)

虽然$ stateParams属于state,但我们可以对视图使用特殊解析:

...
views: {
    "owner": {
        templateUrl: 'client/people/views/owner.ng.html',
        controller: 'ownerCtrl',
        resolve:{
            isEmbedded: function() { return true},
        }
    }
}

我用这两个子状态创建了an example here

.state('parent.child', { 
      url: "/child",
      templateUrl: 'tpl.html',
      controller: 'ChildCtrl',
      resolve: {
        isEmbedded: function() { return false},
      }
})
.state('parent.child2', { 
      url: "/child2",
      templateUrl: 'tpl.html',
      controller: 'ChildCtrl',
      resolve: {
        isEmbedded: function() { return true},
      }
})

控制器可以使用它:

.controller('ChildCtrl', ['$scope', 'isEmbedded', 
  function ($scope, isEmbedded) { 
    console.log(isEmbedded)
  }
])

检查here