我在這裏使用durandal/requirejs/knockout。 我還使用用於映射的coderenaissance插件(ko.viewmodel.updateFromModel(zitem,數據)。)如何以編程方式更新複雜的基因敲除可觀察性?
我碰到我的AJAX調用它,我映射到我的zitem觀察到以下數據。
{
"itemNumber" : "ABATAH000",
"effectiveDate" : "2015-11-03T15:30:05.7118023-05:00",
"expiryDate" : "2015-05-03T15:30:05.7118023-04:00",
"minimumPremium" : 25,
"zSubItems" : [{
"zSubItemName" : "Mine",
"unitDistance" : 100000,
"zSubSubItems" : [{
"zSubSubItemName" : "CoverageA",
"zSubSubItemPremium" : 100.0,
"id" : 0
}
],
"id" : 1
}
],
"id" : 0
}
這裏是我使用的視圖模型:
define(['plugins/http', 'durandal/app', 'knockout', 'services/datacontext'],
function (http, app, ko, datacontext) {
var zitem = ko.observable();
var activate = function() {
//This is just a wrapper around an ajax call.
return datacontext.getPolicy("value")
.then(function(data) {
ko.viewmodel.updateFromModel(zitem, data);
});
};
var updateMinimumPremium = function (thisItem) {
//This doesn't work
zitem.minimumPremium(thisItem.minimumPremium + 1);
};
return {
displayName: 'zitem example',
zitem: zitem,
updateMinimumPremium: updateMinimumPremium,
activate: activate
};
});
我的updateMinimumPremium結合在同一水平minimumPremium元素上點擊一個按鈕。
<button data-bind="click: $parent.updateMinimumPremium">Add 1</button>
如何以編程方式更新[minimumPremium]或[zSubSubItemPremium]?
可以是... zitem.minimumPremium(thisItem.minimumPremium()+ 1); ... minimumPremium將是可觀察的。 –
@ Sam.C不幸的是,thisItem來自似乎不可觀察的參數(與上面聲明的所有項目都是可觀察的zitem相反)。 – Maleki
什麼不起作用?重新繪製視圖,當值改變時? – msolvaag