如何用程序更新可观察到的复杂淘汰赛
How can I update a complex knockout observable programatically?
我在这里使用durandal/requirejs/敲除。我还在使用代码复兴插件进行映射(ko.viewmodel.updateFromModel(zitem,data)。)
我从ajax调用中获得以下数据,并将这些数据映射到我的zitemobservable中。
{
"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]?
"minimumPremium"将是可观察到的
zitem.minimumPremium(thisItem.minimumPremium() + 1);
你的zitem
也是可观察的,所以试试这个:
zitem().minimumPremium(thisItem.minimumPremium + 1);
在实际应用程序中,不要忘记检查zitem()
调用的值——它可以被取消初始化。
相关文章:
- 在Redux中,我应该在哪里编写复杂的异步流
- 将复杂对象从angular js传递到web api,它总是返回404
- dropdown.js中的复杂事件处理
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 相当复杂的Regex
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 加速我的复杂函数绘图仪(canvas+javascript)
- JQuery Mobile Javascript复杂方程式
- 如何使用javascript过滤复杂的json对象
- 复杂量角器选择器
- JavaScript中的复杂字符串匹配
- 有关PouchDB的复杂startkey/endkey查询未返回预期结果
- 复杂的javascript函数,我该如何使用它
- TinyMCE:添加复杂格式
- 如何使用原型继承编写一个整洁灵活的复杂javascript应用程序
- 使用复杂数组时Jquery自动完成功能不起作用
- 解析复杂的json-jquery
- 使用angular显示复杂json中的列表
- 如何用程序更新可观察到的复杂淘汰赛