gpt4 book ai didi

javascript - Angular UI 路由器 : decide child state template on the basis of parent resolved object

转载 作者:数据小太阳 更新时间:2023-10-29 03:52:02 26 4
gpt4 key购买 nike

这是我的 app.js 文件-我有一个母国和两个子国。两个 subview 都需要该对象。

    states.push({
name: 'parentstate',
url: '/parent/:objId',
abstract: true,
templateUrl: 'views/parentview.html',
controller: function() {},
resolve: {
obj: function(OBJ, $stateParams) {
return OBJ.get($stateParams.objId);
}
}
});

我想使用这个已解析的对象来决定子模板

    states.push({
name: 'parentstate.childs',
url: '/edit',
views: {
"view1@parentstate": {
templateUrl: 'views/view1',
controller: 'view1Ctrl'
},
"view2@parentstate": {
templateUrl: function(obj) {
if (obj.something == something) {
return "views/view2first.html";
} else {
return 'views/view2second.html';
}
},
controller: 'view2Ctrl'
}
}
});

我怎样才能做到这一点?

最佳答案

有一个工作 example .我们应该使用 templateProvider 而不是 templateUrl。这是新的状态定义:

  $stateProvider
.state('parentstate.childs', {
url: '/edit',
views: {
"view1@parentstate": {
templateUrl: 'views.view1.html',
controller: 'view1Ctrl',
},
"view2@parentstate": {
templateProvider: function($http, $stateParams, OBJ) {

var obj = OBJ.get($stateParams.objId);
var templateName = obj.id == 1
? "views.view2.html"
: "views.view2.second.html"
;

return $http
.get(templateName)
.then(function(tpl){
return tpl.data;
});
},
controller: 'view2Ctrl',
}
}
});

我们为什么要使用这种方法?如此处所述:

Templates

TemplateUrl
... templateUrl can also be a function that returns a url. It takes one preset parameter, stateParams, which is NOT injected.

TemplateProvider
Or you can use a template provider function which can be injected, has access to locals, and must return template HTML, like this:

检查此工作中基于 TemplateProvider 的解决方案 plunker

关于javascript - Angular UI 路由器 : decide child state template on the basis of parent resolved object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25289135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com