2013-05-01 1 views
3

У меня есть observableArray объектов в моей модели представления, и внутри у меня есть наблюдаемое свойство на одной клавише:Подписка на наблюдаемом недвижимости в observableArray в Knockout.js

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;}); 

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

ответ

0

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

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'); 
     }); 
    }); 
}; 
+0

Спасибо за ваш ответ! TMsg является локальным var и не был добавлен в KO как наблюдаемый. Я попробовал все эти варианты: systemMessagesArray(). Subscribe (function (v) {alert ('changed');}); И: systemMessagesArray(). READ.subscribe (function (v) {alert ('changed');}); Я также попробовал без вызова массива как метода (без скобок) и ничего. – user2250351

+0

Не могли бы вы сделать скрипку, чтобы проиллюстрировать проблему? – Damien

+0

Интересно, насколько интенсивна память. Было бы лучше, если бы был способ сказать «sysMsgs.subscribe (« tMsg », function() {console.log (« changed »);})" – netpoetica

Смежные вопросы