我使用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
:
答案 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