首页 > 解决方案 > 订阅循环中的属性 - KnockoutJs

问题描述

我需要帮助来订阅对象中的属性。我不知道哪个属性名称和多少,我正在根据来自服务器的数据生成一个属性对象。

我有如下代码:

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

任何人都可以解释我做错了什么,并可能提供一些变体如何使其工作吗?谢谢你。

标签: javascriptknockout.jsobservablesubscribe

解决方案


您收到此错误的原因是因为 0(零)不是 Knockout observable(函数)。您正在尝试订阅一个整数。

尝试这个:

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

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

推荐阅读