2013-04-18 45 views
2

我想根據月份中的天數創建動態表並在其上應用挖空綁定。 到目前爲止,我已經創建了基本表並生成了tds從具有固定第一列的挖空視圖模型創建動態表

這是我的KO視圖模型:

var WorkerModel = function (_workerId, _workerFullName, _daysOfTask) { 
    this.workerId = _workerId; 
    this.workerFullName = _workerFullName; 
    this.daysOfTask = _daysOfTask; 
}; 

var AppViewModel = { 

    daysInMonth: ko.observable(), 
    workersArray: ko.observableArray(), 

    getWorkers: function() { 
     // get workers from server 
    } 
} 

我創建的jsfiddle例如: jsfiddle

問題是,我不知道如何確定是否請將dayOfMonth是dayOfTask並添加HTML到那個。

的foreach:daysInMonth - 打造TD

如果(daysOfTask [I] ==請將dayOfMonth)把HTML: 「W」 在TD

此外,我怎麼能重複使用ko.observable ()?在小提琴我已經把daysInMonth作爲observablearray()但duno如何創建與淘汰賽for loop。類似這樣的:

daysInMonth = ko.observable(15);

< KO爲(I = 0;我< daysInMont;我++)>

...一些代碼

</KO>

Basicly我想獲得該表格佈局:

enter image description here

回答

2

你是在正確的軌道上。

您可以使用if綁定來有條件地顯示「W」。您只需要使用indexOf method(或者如果您的瀏覽器不支持它,則使用jQuery中存在的實現,underscore.js等)來檢查daysInMonth集合中的當前項是否在daysOfTask陣列中。

您可以用$data財產和實際daysOfTask陣列與$parentcontextual binding properties得到了daysInMonth當前項目:

<!-- ko foreach: $root.daysInMonth--> 
    <td> 
     <!-- ko if: $parent.daysOfTask.indexOf($data) != -1 --> 
      W 
     <!-- /ko --> 
    </td> 
<!-- /ko --> 

演示JSFiddle.

+0

非常感謝,它的工作般的魅力。你能告訴我關於'for'循環,因爲我會得到daysInMonth像其他函數的整數。除了foreach之外,還有其他的循環方式嗎?如果不是絕對必要的,我不想爲daysInMonth創建數組。 – freshbm

+0

在KO中沒有內置'for'綁定。所以你需要創建你的daysInMonth數組。但是在最近的一個問題中,有人試圖實現一個:http://stackoverflow.com/questions/16089752/knockout-for-binding – nemesv

+0

但是有一些[範圍實現](http:// underscorejs。組織/#範圍)可以幫助你創建你的天數組。 – nemesv

相關問題