我和durandal 2和breezejs一起工作。
我的数据库中有一些表,可以将它们称为table1和table2。
在项目中,我为table1创建了一个CRUD:viewmodels/table1crud.js
+ views/table1crud.html
viewmodel和视图,它将使用breeze连接到数据库,从table1获取数据,列出数据,并提供更新/删除/添加操作。
对于table2我可以这样做,创建另一个crud(view / viewmodel),但它可能不优雅,特别是如果我有超过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.html
和views/table2.html
。
所以这是我的问题:有没有办法在构造函数中使用entityType与entitycrud
或table1
组合table2
?
类似的东西:
<div data-bind="compose : {model : 'entitycrud("table1")', view : 'views/table1'}"></div>
<div data-bind="compose : {model : 'entitycrud("table2")', view : 'views/table2'}"></div>
这个html代码当然不会工作,我怎么能做类似的事情?
谢谢。
答案 0 :(得分:4)
您可以在另一个视图模型中使用正确的值(例如cruds model),
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>