如何以编程方式更新复杂的挖掘可观察对象?

时间:2015-11-03 20:55:21

标签: javascript knockout.js

我在这里使用durandal / requirejs / knockout。 我也使用coderenaissance插件进行映射(ko.viewmodel.updateFromModel(zitem,data)。)

我从我的ajax调用中获取以下数据,我将其映射到我的zitem observable。

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

    };
});

这是我正在使用的视图模型:

<button data-bind="click: $parent.updateMinimumPremium">Add 1</button>

我将updateMinimumPremium绑定到与minimumPremium元素处于同一级别的按钮上。

{{1}}

如何以编程方式更新[minimumPremium]或[zSubSubItemPremium]?

2 个答案:

答案 0 :(得分:0)

你的zitem也是可观察的,所以试试这个:

zitem().minimumPremium(thisItem.minimumPremium + 1);

在实际应用中,请勿忘记检查zitem()来电的值 - 它可以是未初始化的。

答案 1 :(得分:0)

“minimumPremium”是可观察的

zitem.minimumPremium(thisItem.minimumPremium() + 1);