Подписаться на собственности в цикле - KnockoutJs - PullRequest
0 голосов
/ 15 октября 2018

Мне нужна помощь в оформлении подписки на недвижимость в объекте.Я не знаю, какое имя свойства будет и сколько, я генерирую объект свойств в соответствии с данными с сервера.

У меня есть такой код:

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

МожетКто-нибудь объяснит, что я делаю неправильно, и, возможно, предложит какой-нибудь вариант, как заставить это работать?Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Причина, по которой вы получаете эту ошибку, состоит в том, что 0 (ноль) не является наблюдаемой нокаутом (функция).Вы пытаетесь подписаться на целое число.

Попробуйте это:

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

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