我在角色应用程序中使用 angular-ui-router 中的$stateprovider
,如下所示:
.state('order', {
url: "/order/:id",
templateUrl: "/myapp/order"
})
在上面的场景中,我们将id
传递给控制器,我们可以将其称为ui-sref="order({id: 1234})"
。
但是现在我想通过不使用控制器直接调用后端,并按如下方式传递上述内容:
.state('order', {
url: "/order",
templateUrl: "/myapp/order/:id"
})
但显然我的语法错了。 我如何实现这种情况?
答案 0 :(得分:3)
我created working example。这是关于Q&答:
我们的示例中包含模板template-A.html
和template-B.html
。
templateProvider
的状态def看起来像这样
$stateProvider
.state('order', {
url: '/order/:id',
templateProvider: function($http, $templateCache, $stateParams) {
var id = $stateParams.id || 'A';
var templateName = 'template-' + id + '.html';
var tpl = $templateCache.get(templateName);
if (tpl) {
return tpl;
}
return $http
.get(templateName)
.then(function(response) {
tpl = response.data
$templateCache.put(templateName, tpl);
return tpl;
});
},
controller: function($state) {}
});
现在我们可以这样称呼它
<a href="#/order/A">
<a href="#/order/B">
检查here
而且,使用最新版本的angularjs,我们甚至可以让它变得非常简单:
<强> $templateRequest 强>
更新了plunker
.state('order', {
url: '/order/:id',
templateProvider: function($templateRequest, $stateParams) {
var id = $stateParams.id || 'A';
var templateName = 'template-' + id + '.html';
return $templateRequest(templateName);
},
controller: function($state) {}
});