循环订阅属性-KnockoutJs

时间:2018-10-15 13:54:20

标签: javascript knockout.js observable subscribe

在对对象的属性进行分类时,我需要帮助。我不知道哪个属性名称是多少,我正在根据服务器中的数据生成属性对象。

我有类似的代码:

viVm.requestData.ageGroups = {};

    var classificators = viVm.requestData.multiTrip() === 1
        ? viVm.classificators.ageGroups.multiTrip
        : viVm.classificators.ageGroups.singleTrip;

    classificators().forEach(function (entry, index) {
        var entry = ko.toJS(entry);
        var code = entry.code;

        viVm.requestData.ageGroups[code] = 0;

        viVm.requestData.ageGroups[code].subscribe(function (newValue) {
            validateAgeGroupValue(newValue, viVm.requestData.ageGroups[code]);
        });

    });

它设置了属性,其值为tom0,但是在.subscribe()步骤中,我收到一个错误-viVm.requestData.ageGroups[code].subscribe is not a function

可以让enybody解释我做错了什么,也许提供一些变体来使其工作吗? 谢谢。

1 个答案:

答案 0 :(得分:3)

出现此错误的原因是因为0(零)不是可观察到的Knockout(函数)。您正在尝试订阅整数。

尝试一下:

        viVm.requestData.ageGroups[code] = ko.observable(0);

        viVm.requestData.ageGroups[code].subscribe(function (newValue) {
            validateAgeGroupValue(newValue, viVm.requestData.ageGroups[code]);
        });