2014-12-08 3 views
0

Проблема, когда мой ViewModel имеет observableArray (self.images), и я хочу, когда собственность один товар (мм) изменяется отражается на пользовательском интерфейсеОбновление нокаута наблюдаемого элемента Array не отражается в пользовательском интерфейсе?

в реальном коде изображения загружаются с сервера и отображается на объект DOcImage

здесь код обратите внимание, что я пытался несколько вещей, на основе других вопросы ответов, но не повезло еще

здесь скрипка http://jsfiddle.net/mosta/jt6bbeq4/21/ когда нажмите «изменить» он должен показать первый пункт = 2, по линии in upate

var DocImage = function() { 
       var self = this;    
       self.mm = ko.observable('1'); 
    self.nn = ko.observable('1'); 
      }; 
    var viewModel = function() { 
       var self = this; 
      self.images = ko.observableArray([DocImage]); 
       self.update = function() { 
        self.images()[0].mm = '2'; 
       } 
      }; 

      var vm = new viewModel(); 
    vm.images = [{ mm: ko.observable('1') ,nn: ko.observable('2') }, {mm:ko.observable('3'), nn:ko.observable('4')}]; 
ko.applyBindings(vm); 

Цените вашу помощь, спасибо

+0

Вы изменяете значение наблюдаемого callin g с новым значением в качестве аргумента. Ваш код переназначает его, который не будет работать. –

+0

http://jsfiddle.net/jt6bbeq4/22/ –

+0

Спасибо, такая же глупая ошибка синтаксиса jquery ( – Mosta

ответ

0

При настройке

m.images = [{ mm: ko.observable('1') ... 

вы на самом деле повторно написать observableArray с простым массивом. Для того, чтобы обновить значение внутри наблюдаемого массива вы должны использовать другой синтаксис (см documentation)

m.images([{ mm: ko.observable('1') ...); 

То же самое верно и для простых наблюдаемых как mm

self.images()[0].mm('2'); 

См fiddle

0

Здесь вы идете:

var viewModel = function() { 
       var self = this; 
      self.images = ko.observableArray([DocImage]); 
       self.update = function() { 
        self.images[0].mm('2'); 
       } 
      }; 

      var vm = new viewModel(); 
vm.images = [{ mm: ko.observable('1') ,nn: ko.observable('2') }, {mm:ko.observable('3'), nn:ko.observable('4')}]; 
ko.applyBindings(vm); 
Смежные вопросы