2012-05-08 2 views
0

Я не могу понять, где я ошибаюсь. Можете ли вы мне помочь? Я создаю пользовательскую привязку, называемую «bTest1», две наблюдаемые данные (1 массив и 1 строка). Применение этой привязки на струне работает отлично, но не на массив с помощью Koки: ЕогеаспСоздать пользовательские привязки в нокаут foreach

Вот мой jsfiddle ссылка: Here

и мой код

<!-- ko foreach:test --> 
<label><input type="text" data-bind="bTest1:$root.test1,value:$data,valueUpdate:'afterkeydown'" />Test1</label><br/> 
<!-- /ko --> 
<br/> 
<label><input type="text" data-bind="bTest1:test1,value:test1,valueUpdate:'afterkeydown'" />Test2</label> 

и мой JS код (как насколько это возможно):

ko.bindingHandlers.bTest1 = { 
     init: function() { 
      console.log('init Test1'); 
    }, 
    update: function() { 
      console.log('update Test1'); 
    } 
}; 


var modelView = function(){ 
    var self = this; 
    self.test = ko.observableArray(['foreach_test','foreach_test1']); 
    self.test1 = ko.observable('test_alone'); 
} 

ko.applyBindings(new modelView()); 

Благодарю вас за помощь. С уважением S.

+0

jsfiddle работает для меня – freakish

ответ

1

Доброе утро.

ObservableArray отслеживает изменения самого массива (добавление/удаление элементов), а не изменения его элементов. Таким образом, каждый элемент в массиве должен быть помечен как ko.observable, если вы хотите получить те же результаты.

Надеюсь, это поможет!