Связать событие после перезагрузки страницы и создать новый элемент html, используя только Knockout.js, HTML и JS?

0

Я новичок в библиотеках нокаутов, и мы работаем над iPad-приложением. Ситуация заключается в том, когда пользователь проверяет флажок на HTML-странице, нам нужно добавить новый div на странице с некоторыми текстовыми полями в нем и удалить его, когда он уберет их.

Следует отметить: новый div привязан к данным, которые должны быть загружены по умолчанию в текстовое поле или выбраны.

Это iPad-приложение для iPad. Он использует нокаут, jQuery, JS и HTML с MVVM.

Вопрос в том, может ли Knockout связывать элементы html после загрузки страницы, так как пользовательский обработчик работает/регистрируется только во время init и может быть создан динамический div с помощью js и html, если да, то как установить его между двумя статическими div?

Теги:
knockout.js

1 ответ

1
Лучший ответ

Вы можете связывать элементы после загрузки страницы с помощью ko.applyBindings(viewModel, ElementSelector), например:

ko.applyBindings(myModel, $("#myDiv"));

Однако это не то, что вы обычно хотите делать. Гораздо проще использовать привязку If в Knockout, которая будет динамически добавлять или удалять дочерние элементы со страницы.

<input type="checkbox" data-bind='checked: showChild' />
<div id="container" data-bind="if: showChild">
   <!-- stuff here will only be generated if the checkbox is selected -->
</div>

Если у вас было несколько разных элементов для показа, основанных на значении чего-либо, скажем, в списке выбора, вы можете использовать функцию шаблона:

//viewmodel properties
self.Options = ko.observableArray(["Name", "Age", "Height"])
self.TemplateToUse = ko.observable() 


//html
<select data-bind="options: Options, value: TemplateToUse">
</select>

<div data-bind='template: { name: TemplateToUse }'>
   <!-- template whose name is selected value -->
</div>

//templates
<script type="text/html" id="Age">
   <span>Age</span>
</script>

<script type="text/html" id="Name">
   <span>Name</span>
</script>

<script type="text/html" id="Height">
   <span>Height</span>
</script>
  • 0
    Спасибо @SarahBourt, я с нетерпением жду его реализации, никогда не знал о шаблоне в нокауте. Я отмечаю это как ответ.
  • 0
    Приветствия. Если вы еще этого не сделали, зайдите в раздел документации Knockout.js по адресу knockoutjs.com/documentation/introduction.html Knockout имеет отличную документацию :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню