【问题标题】:durandal : multiple views for one viewmodeldurandal:一个视图模型的多个视图
【发布时间】:2013-10-10 13:09:17
【问题描述】:

我正在使用 durandal 2 和breathjs。

我的数据库中有一些表,我们称它们为 table1 和 table2。

在项目中,我为 table1 创建了一个 CRUD:viewmodels/table1crud.js + views/table1crud.html viewmodel 和视图,它将使用微风连接到数据库,从 table1 获取数据,列出数据,并提供更新/删除/添加操作.

对于 table2,我可以做同样的事情,创建另一个 crud(视图/视图模型),但它可能并不优雅,特别是如果我有超过 2 个表。

所以我的想法是使用构造函数创建一个entitycrud viewmodel:

define(function(require){

   var vm= function(entityType){

    this.entityType= entityType;
    this.activate = function(){...};
    this.attached = function(){...};
    etc ...

    this.createEntity = function(){...};
    etc ...
   };

  return vm;
 });

加上多个视图views/table1.htmlviews/table2.html

所以这是我的问题:有什么方法可以使用构造函数中的 entityType 组合 entitycrudtable1table2

类似:

<div data-bind="compose : {model : 'entitycrud("table1")', view : 'views/table1'}"></div>

<div data-bind="compose : {model : 'entitycrud("table2")', view : 'views/table2'}"></div>

这个 html 代码当然行不通,我该怎么做类似的事情??

谢谢。

【问题讨论】:

    标签: mvvm breeze durandal composition durandal-2.0


    【解决方案1】:

    你可以在另一个视图模型中拥有一个具有正确值的属性,比如这样(比如 cruds 模型),

    define(function(require){
    
       var vm= function(entityType){
             this.crudTable1=new entitycrud("table1");
             this.crudTable2=new entitycrud("table2");
       };
    
        return vm;
     });
    

    然后在 cruds.html 视图中像这样进行 compose 绑定,

      <div data-bind="compose : {model : crudTable1, view : 'views/table1'}"></div>
    
    <div data-bind="compose : {model : crudTable2, view : 'views/table2'}"></div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2014-08-15
      • 1970-01-01
      相关资源
      最近更新 更多