首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HotTowel Durandal根据用户注入不同的视图

HotTowel Durandal根据用户注入不同的视图
EN

Stack Overflow用户
提问于 2013-05-09 21:23:24
回答 2查看 1.7K关注 0票数 1

shell.html for HotTowel模板中有:

代码语言:javascript
复制
    <!--ko compose: {model: router.activeItem, 
        afterCompose: router.afterCompose, 
        transition: 'entrance'} -->
    <!--/ko-->

它将根据约定自动插入适当的视图。我试图根据用户在HotTowel/Durandal应用程序中的角色注入不同的视图。例如,我有两种观点,

  1. productEditor_Admin.html
  2. productEditor_Superviser.html (而不是这两个视图,我过去只有productEditor.html,按照惯例,一切正常)

而且只有一个ViewModel:

  1. productEditor.js

现在,我希望在productEditor.js中有一个函数,它可以让我根据用户的角色来决定插入哪个视图。我在合成文献中看到,我们可以做function strategy(settings) : promise,但我不确定在HotTowel模板中实现这个目标的最佳方法是什么。有人已经试过并得到了答案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-10 13:07:10

可以在视图模型中返回“viewUrl”属性,因此希望下面这样的内容能够打开门;-)。

代码语言:javascript
复制
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.'
    };
});
票数 3
EN

Stack Overflow用户

发布于 2013-05-09 21:56:25

你看过约翰爸爸在PluralSight上的PluralSight课程了吗?

看看这个应用程序的源代码:https://github.com/johnpapa/PluralsightSpaJumpStartFinal

在App/Config.js文件中,他添加了默认可见的其他路由,如:

代码语言:javascript
复制
 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()方法决定导航哪个视图并导航到该视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16471362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档