0

我正在使用 durandal 2 和breathjs。

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

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

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

所以我的想法是entitycrud使用构造函数创建一个视图模型:

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.

所以这是我的问题:有没有办法在构造函数中entitycrud使用table1table2使用 entityType ?

就像是 :

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

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

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

谢谢你。

4

1 回答 1

4

您可以在另一个视图模型中拥有一个具有正确值的属性(例如 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>
于 2013-10-10T05:08:44.343 回答