在shell.html for HotTowel模板中有:
<!--ko compose: {model: router.activeItem,
afterCompose: router.afterCompose,
transition: 'entrance'} -->
<!--/ko-->它将根据约定自动插入适当的视图。我试图根据用户在HotTowel/Durandal应用程序中的角色注入不同的视图。例如,我有两种观点,
而且只有一个ViewModel:
现在,我希望在productEditor.js中有一个函数,它可以让我根据用户的角色来决定插入哪个视图。我在合成文献中看到,我们可以做function strategy(settings) : promise,但我不确定在HotTowel模板中实现这个目标的最佳方法是什么。有人已经试过并得到了答案吗?
发布于 2013-05-10 13:07:10
可以在视图模型中返回“viewUrl”属性,因此希望下面这样的内容能够打开门;-)。
define(function () {
viewUrl = function () {
var role = 'role2'; //Hardcoded for demo
var roleViewMap = {
'default': 'samples/viewComposition/dFiddle/index.html',
role1: 'samples/viewComposition/dFiddle/role1.html',
role2: 'samples/viewComposition/dFiddle/role2.html'
};
return roleViewMap[role];
}
return {
viewUrl: viewUrl(),
propertyOne: 'This is a databound property from the root context.',
propertyTwo: 'This property demonstrates that binding contexts flow through composed views.'
};
});发布于 2013-05-09 21:56:25
你看过约翰爸爸在PluralSight上的PluralSight课程了吗?
看看这个应用程序的源代码:https://github.com/johnpapa/PluralsightSpaJumpStartFinal
在App/Config.js文件中,他添加了默认可见的其他路由,如:
var routes = [{
url: 'sessions',
moduleId: 'viewmodels/sessions',
name: 'Sessions',
visible: true,
caption: 'Sessions',
settings: { caption: '<i class="icon-book"></i> Sessions' }
}, {
url: 'speakers',
moduleId: 'viewmodels/speakers',
name: 'Speakers',
caption: 'Speakers',
visible: true,
settings: { caption: '<i class="icon-user"></i> Speakers' }
}, {
url: 'sessiondetail/:id',
moduleId: 'viewmodels/sessiondetail',
name: 'Edit Session',
caption: 'Edit Session',
visible: false
}, {
url: 'sessionadd',
moduleId: 'viewmodels/sessionadd',
name: 'Add Session',
visible: false,
caption: 'Add Session',
settings: { admin: true, caption: '<i class="icon-plus"></i> Add Session' }
}];您可以使用相同的逻辑向两个视图添加路由,然后在productEditor.js中可以使用router.navigateTo()方法决定导航哪个视图并导航到该视图。
https://stackoverflow.com/questions/16471362
复制相似问题