Durandal - 在viewmodel中指定模块的视图

时间:2013-06-12 15:13:57

标签: javascript durandal

我正在尝试找到一种方法来为viewmodel指定视图的位置。我有一个viewModels集合,都有一个共同的祖先。

我希望他们都使用相同的视图,它本身将使用动态合成来构建页面。

由于

1 个答案:

答案 0 :(得分:2)

http://durandaljs.com/documentation/View-Locator/

结帐Durandal的查看定位器文档

如果我正确理解您的要求,那么向vms添加getView()函数或viewUrl属性应该可以胜任。

getView()示例(通过为每个vm添加多个视图,与您想要的相反,但您明白了这一点。)

http://dfiddle.github.io/dFiddle-1.2/#/view-composition/getView

var getView = ko.computed(function(){
    var roleViewMap = {
      'default': 'viewComposition/getView/index.html',
      role1: 'viewComposition/getView/role1.html',
      role2: 'viewComposition/getView/role2.html'
    };

    this.role = (role() || 'default');

    return roleViewMap[this.role];
});

viewUrl示例

http://dfiddle.github.io/dFiddle-1.2/#/view-composition/SO16483013

function viewUrl(){
 this.role = (role() || 'default');

     var roleViewMap = {
       'default': 'samples/viewComposition/SO16483013/index.html',
       role1: 'samples/viewComposition/SO16483013/role1.html',
       role2: 'samples/viewComposition/SO16483013/role2.html'
     };

     return roleViewMap[this.role];
}