【发布时间】:2015-10-22 17:29:11
【问题描述】:
使用 Angularjs UI-Router 我正在尝试构建一个带有主视图和侧面优化/过滤结果视图的典型页面。
我已经分叉了示例应用程序,现在对其进行了修改,使其具有显示过滤器视图和主视图的父抽象状态,以便我可以共享抽象状态解析的数据。
问题是我无法在不破坏范围继承的情况下显示过滤器视图。如果我添加 'views' 参数,它会破坏范围,那么我怎样才能让它工作?
这是我的代码和 Plunker
$stateProvider
.state('applications', {
abstract: true,
url: '/applications',
templateUrl: 'planning.html',
controller: function($scope){
$scope.planning = [{ id:0, name: "Alice" }, { id:1, name: "Bob" }];
$scope.filterPlanning = function(data) {
var output = $scope.planning;
// test filter
output = $filter('filter')({ name: "Alice" });
return output;
}
},
/* this breaks the scope from being inherited by the child views
views: {
'': {
templateUrl: 'applications.html'
},
'filters@applications': {
templateUrl: 'applications.filters.html'
}
},*/
onEnter: function(){
console.log("enter applications");
}
})
子状态:
.state('applications.list', {
url: '/list',
// loaded into ui-view of parent's template
templateUrl: 'planning.list.html',
onEnter: function(){
console.log("enter applications.list");
}
})
.state('applications.map', {
url: '/map',
// loaded into ui-view of parent's template
templateUrl: 'planning.map.html',
onEnter: function(){
console.log("enter applications.map");
}
})
applications.html
<div class="row">
<div class="span4">
<div ui-view="filters"></div>
</div>
<div class="span8">
<div ui-view></div>
</div>
</div>
我已经将列表、地图和过滤器视图构建为指令,所以我希望一旦我可以让这个演示工作,我可以相对轻松地交换它们。
【问题讨论】:
-
你可以试试
<div ui-view=""></div> -
@mydo47 我只是尝试过,但它什么也没做。视图仍可正确加载,但
$scope.planning不可用。
标签: angularjs nested angular-ui-router state