dom*_*kun 4 javascript angularjs angular-ui-router
我有一个带有一些嵌套视图的页面,使用ui.router和我希望将一些数据从父控制器传递给子控制器,而不会将无用的服务注入到子控制器中.
在我看来,像这样的东西是完美的
state('home', {
url: "/home",
templateUrl: "parts/home.html",
controller: "FatherController"
}).
state('home.child', {
url: "/child",
templateUrl: "parts/home/child.html",
controller: "ChildController",
params: {$scope.data = $rootScope.someData}
})
Run Code Online (Sandbox Code Playgroud)
你碰巧知道是否有办法做到这一点?
Jos*_*ber 11
如果子视图嵌套在父视图中,则子控制器将自动继承父作用域.
您应该能够直接从子控制器访问父控制器的数据.
好吧,我猜你并不总是可以选择将数据移动到父控制器等.
我对此的建议是使用解析器(https://github.com/angular-ui/ui-router/wiki#resolve)来做一些魔术.
以下是如何使其工作的示例:
var dataResolver = ['$scope', '$stateParams', 'Service',
function($scope, $stateParams, Service) {
Service.get($stateParams.objectId).then( function(obj) {
$scope.myObject = obj;
return obj;
});
};
];
$stateProvider.state("foo.details", {
"url": '/foo/:objectId',
"resolve": { "data": dataResolver },
"controller": "SomeController",
"template": "<ui-view />"
)
Run Code Online (Sandbox Code Playgroud)
当控制器实例化时,你会神奇地获得$ scope.obj数据,无论如何.
| 归档时间: |
|
| 查看次数: |
13001 次 |
| 最近记录: |