我有具有下列設置(或多或少)的應用:Knockout.js使用 「與」 結合困境
JS
var ObjectVM = function(data) {
var me = this;
me.name = ko.observable(data.name);
//Set other properties
...
me.isSelected(false);
};
var VM = function() {
var me = this;
me.Records = [];
me.Selected = ko.observable(undefined);
me.Select = function (rec) {
if (rec.hasChanges == undefined) {
//attach editable functionality
ko.editable(record);
}
rec.isSelected(true);
rec.beginEdit();
if (me.Selected() != undefined) {
if (me.Selected().hasChanges()) {
me.Selected().rollback();
}
me.Selected().isSelected(false);
me.Selected().commit();
}
me.Selected(rec);
//Do some hiding/showing of form...
};
me.Init = function(){
$.ajax({...,
success: function(data){
for(var i = 0;i< data.length;i++){
me.Records.push(new ObjectVM(data[i]));
}
}
};
};
HTML
<div>
RECORDS DISPLAY GRID (Pretend it's a table with 5 columns and 10 rows)
</div>
<div data-bind="with: Selected">
<form id="editRec">
<label>Name</label>
<input data-bind="value: name" />
</form>
</div>
我在調用VM的錶行上有一個單擊綁定設置選擇funciton。當Selected()未定義時,使用「with」綁定將刪除表單,並在Selected()有記錄時將其添加回去。每次發生這種情況時,我都失去了附加到表單的驗證,製表符和事件綁定(非KO綁定)。該應用程序功能完美,但在記錄之間切換時性能命中,因爲它不得不重新添加表單,設置驗證,ui配置和綁定。
有沒有辦法讓表單停留在頁面上,保留我的綁定和設置,或者我每次選擇值改變時都會被迫處理這個命中?
您使用的是什麼版本的KO?我想我在2.2的地方讀過這個不應該發生的事情(對此沒有正面評價) –
目前2.1版本,我現在就試試看,讓你知道! – TNCodeMonkey
@AndrewWhitaker沒有骰子的更新,我很有希望:( – TNCodeMonkey