2013-10-10 53 views
0

Im與杜蘭達2和breezejs一起工作。durandal:一個viewmodel的多個視圖

我在我的DB中有一些表讓我們稱它們爲table1和table2。

在該項目中我創建了一個CRUD爲表1:viewmodels/table1crud.js + views/table1crud.html視圖模型和視圖,將使用微風連接到數據庫,從表1中獲取數據,列出數據,並提供一個更新/刪除/添加操作。

對於table2我可以做同樣的事情,創建另一個crud(view/viewmodel),但它可以不優雅,特別是如果我有超過2個表。

所以我的想法是創建ONE 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

所以這裏是我的問題:有沒有什麼辦法在構造函數中使用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代碼會當然不是工作,我該怎麼做類似的事情?

謝謝。

回答

4

你可以擁有像這樣的正確的價值觀另一個視圖模型的屬性(比如說cruds模型),

define(function(require){ 

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

    return vm; 
}); 

然後做撰寫的cruds.html視圖內像這樣的結合,

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

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

這正是我需要的,謝謝。 – dafriskymonkey

相關問題