Подпишитесь на наблюдаемое свойство в observableArray в Knockout.js

У меня есть observableArray объектов в моей модели представления, и внутри у меня есть наблюдаемое свойство для одного ключа:

var somefunc = function(sysMsgs)
{
    // Create a VO from passed array
    $.each(sysMsgs, function(i, v) {
    var tMsg = {
        ...
        READ : ko.observable(v.READ),
        ...
    };
    systemMessagesArray.push(tMsg); // Already Initialized observableArray
   });
}

Мне нужно подписаться на изменения клавиши READ, чтобы я мог отключить элементы управления формы в представлении. На обычном наблюдаемом я бы:

variable.subscribe(function(v) {do something with the value v;});

Любая идея о том, как написать ключ в массиве? Спасибо...


person user2250351    schedule 01.05.2013    source источник


Ответы (1)


Вы пробовали это?

var somefunc = function (sysMsgs) {
    // Create a VO from passed array
    $.each(sysMsgs, function (i, v) {
        var tMsg = {
            READ: ko.observable(v.READ),
        };
        systemMessagesArray.push(tMsg);
        tMsg.subscribe(function {
            alert('changed');
        });
    });
};
person Damien    schedule 01.05.2013
comment
Спасибо за ваш ответ! tMsg является локальной переменной и не был добавлен в KO в качестве наблюдаемого. Я пробовал все эти варианты: systemMessagesArray().subscribe(function(v) {alert('changed');}); И: systemMessagesArray().READ.subscribe(function(v) {alert('changed');}); Я также пробовал без вызова массива как метода (без скобок) и ничего. - person user2250351; 01.05.2013
comment
Не могли бы вы сделать скрипку, чтобы проиллюстрировать проблему? - person Damien; 01.05.2013
comment
Интересно, насколько интенсивно это память. Было бы лучше, если бы был способ сказать sysMsgs.subscribe(tMsg, function(){ console.log(changed); }) - person netpoetica; 29.08.2014