考虑某条路线,让我们说 myapp \ profile 有两种模式(买方/卖方) 我想要实现的是:
我已经考虑过了:
你能分享一下干净利落的方式吗?
答案 0 :(得分:0)
通常,为了动态选择状态模板,您可以使用函数:
state = {
.....
templateUrl: function($stateParams){
if ($stateParams.isThis === true)
return 'this.html'
else
return 'that.html'
}
}
不幸的是,您无法将其他注射剂传递给templateUrl函数。 UI.Router只传递$stateParams
。您不希望以任何方式更改URL,因此您无法使用它。
但您可以使用templateProvider
代替。使用此功能,您可以将服务传递到templateProvider
功能,以确定您的用户是买方还是卖方。您还需要使用UI.Router的$templateFactory
服务轻松提取和缓存模板。
state = {
....
templateProvider: function($templateFactory, profileService){
var url = profileService.isBuyer ? 'buyer.html' : 'seller.html';
return $templateFactory.fromUrl(url);
}
}
这是在你的plunkr工作 - http://plnkr.co/edit/0gLBJlQrNPUNtkqWNrZm?p=preview
文档: