2015-08-03 2 views
0

У меня есть вложенный список, который я динамически создаю с помощью jQuery в Ko ViewModel. Этот список может иметь бесконечные дочерние элементы, вот почему я делаю это с помощью jQuery, а не напрямую с KnockOut.Ko.applyBindings с полностью динамически создаваемыми элементами с jQuery

Моя проблема заключается в том, что каждый из этих динамически созданных дочерних элементов имеет функциональность, мне нужно подключиться к моей модели KnockOut ViewModel, но я не могу найти способ.

Херес JSFiddle с моим текущим кодом: http://jsfiddle.net/juandozco/691mqcub/5/

, что я пытался:

  • пытался добавить все кнопки в массив, а затем сделать Еогеасп к этому массиву и запустить ko.applyBindings(ViewModel, DOMElement), техника его подводит работа для меня.
  • попытался сделать ko.applyBindings сразу после создания кнопки, это не сработает, потому что DOMElement еще не существует, поэтому Ko can can do binding.

я связать click событие с моими кнопками, с JQuery, я дал класс каждой из кнопок, а затем сделал: $(document).on("click","btnClass",function(){//code});

Но я уверен, что там должен быть лучший способ сделать это.

Любые рекомендации относительно того, как это сделать? или есть другой или более чистый способ сделать это?

+1

Посмотрите на рекурсивных шаблонах: http://stackoverflow.com/questions/15525216/recursive-template-with-knockout-js –

ответ

3

У меня есть вложенный список, который я динамически создаю с помощью jQuery в Ko ViewModel. Этот список может иметь бесконечные дочерние элементы, поэтому я делаю это с помощью jQuery, а не напрямую с KnockOut.

Именно по этой причине существует knockout templates. Вы можете организовать свои элементы с бесконечными детьми и организовать шаблон для рендеринга.

Моя проблема заключается в том, что каждый из этих динамически созданных дочерних элементов имеет функциональность, мне нужно подключиться к моей модели KnockOut ViewModel, но я не могу найти способ.

Использование шаблонов

[...], что я пробовал: [...]

Старайтесь не смешивать пользовательский интерфейс со свойствами на модели. В этом случае лучше добавить наблюдаемые свойства к вашим элементам в массиве данных и использовать его, как всегда, с нокаутом. Шаблон имеет тот же эффект, что и обычная привязка HTML, поэтому рекурсия не должна быть проблемой (в прошлом я реализовал рекурсивные элементы, как вы спрашивали, с шаблонами KO).

Привет

+1

Это хороший совет. – Tom

+0

Большое спасибо за ваши советы. Я получил эту работу с рекомендацией @Roy J. – Juanda

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