Я использую 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
}
А вот ViewModel я использую:
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, к сожалению, этот элемент исходит из параметра, который, как представляется, не наблюдается (в отличие от объявленного выше элемента, из которого все элементы наблюдаемы.) – Maleki
Что не работает? Перерисовывание вашего представления, когда значение изменяется? – msolvaag