Mvvm durandal:一个视图模型的多个视图

Mvvm durandal:一个视图模型的多个视图,mvvm,breeze,durandal,composition,durandal-2.0,Mvvm,Breeze,Durandal,Composition,Durandal 2.0,我和durandal 2和breezejs一起工作 我的数据库中有一些表,我们称它们为table1和table2 在这个项目中,我为table1创建了一个CRUD:viewmodels/table1crud.js+views/table1crud.htmlviewmodel和view,它将使用breeze连接到数据库,从table1获取数据,列出数据,并提供更新/删除/添加操作 对于表2,我可以做同样的事情,创建另一个crud(视图/视图模型),但它可能并不优雅,特别是如果我有两个以上的表 因此

我和durandal 2和breezejs一起工作

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

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

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

因此,我的想法是创建一个带有构造函数的
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.html
views/table2.html

因此,我的问题是:是否有任何方法可以使用构造函数中的entityType使用
table1
table2
组合
entitycrud

比如:

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

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

这个html代码当然不会工作,我怎么能做类似的事情


谢谢。

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

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

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

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

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

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

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

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