Могу ли я применитьBindings к нескольким элементам DOM с помощью Knockout?
У меня есть такая структура:
<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>
... и мне нужно иметь возможность ko.applyBindings
до col1
и col3
. Прямо сейчас я делаю что-то вроде этого для привязки к col1
:
ko.applyBindings(myViewModel, document.getElementById("col1"));
Это хорошо работает, чтобы заполнить первый столбец. Но мне все еще не хватает третьей колонки. Я хотел бы иметь возможность сделать это:
<div id='col1' class='bindable'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3' class='bindable'> ... some more ko elements ... </div>
И затем...
ko.applyBindings(myViewModel, $(".bindable"));
... так что он пытается привязать ко всем экземплярам .bindable
. Есть ли что-нибудь подобное в нокауте или у вас есть какие-то предложения?
Ответы
Ответ 1
Вот лучшее решение, которое я нашел:
<div id='col1' class='bindable'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3' class='bindable'> ... some more ko elements ... </div>
И затем script, который связывает...
$(".bindable").each(function(){
ko.applyBindings(myViewModel, this[0]);
}
Это работает для меня, и это приятно и чисто.
Ответ 2
Рассматривая это под другим углом, у вас есть только 1 модель обзора. Так почему бы не обернуть весь набор div (col1, col2 и т.д.) С помощью div и связать с ним свою модель просмотра?
<div id='myWrapper'>
<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>
</div>