在对对象的属性进行订阅时,我需要帮助。我不知道哪个属性名称是多少,我正在根据服务器中的数据生成属性对象。
我有这样的代码:
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
有人可以解释我做错了什么吗,也许可以提供一些变型方法使其起作用?
谢谢。
最佳答案
您收到此错误的原因是因为0(零)不是可观察到的Knockout(函数)。您正在尝试订阅整数。
尝试这个:
viVm.requestData.ageGroups[code] = ko.observable(0);
viVm.requestData.ageGroups[code].subscribe(function (newValue) {
validateAgeGroupValue(newValue, viVm.requestData.ageGroups[code]);
});