Я пытаюсь внедрить Knockout в мои проекты Symfony2, и я пришел к тому, что мне нужно интегрировать тип сбора в мою форму. Я следовал документации Symfony2 (http://symfony.com/doc/current/reference/forms/types/collection.html). У меня большой опыт в SF2. Тем не менее, я недавно начинаю нокаут.
Я хотел бы знать, как я могу объединить ветку symfony2 {% для bform в form.a.bs%} с data-bind = «foreach: b», чтобы моя таблица отображала текущие данные, а также позволяла мне добавлять / удалить с помощью KnockoutJS.
У меня до сих пор нет работающего фрагмента кода, потому что я думаю, как мне этого добиться, но это пример <tbody>
таблицы:
<tbody data-prototype="{{ form_widget(form.a.bs.vars.prototype)|e }}">
{% for bForm in form.a.bs %}
<tr>
<td>{{ form_widget(bForm.first) }}</td>
<td>{{ form_widget(bForm.second) }}</td>
</tr>
{% endfor %}
</tbody>
В моем нокауте у меня сейчас есть:
function viewModel() {
self = this;
self.bs = ko.observableArray();
self.addB = function() {
// Logic to add a new form row in the table provided in SF2 documentation above
}
}
ko.applyBindings(new viewModel());
Я не знаю, как поступить, чтобы обернуть это вместе. Я знаю, что могу использовать JSON с Knockout, но, думая об этом с точки зрения SF2, когда вы нажимаете на действие, скажем, createAAction () {}, который возвращает .html.twig с формой, все, что я вижу в документации по Knockout, это как получить JSON с сервера, но это не совсем мой случай. Я хотел бы, чтобы, когда страница загружалась с текущей информацией, нокаут ее поднимал.
Дайте мне знать, если это не достаточно ясно.
Не будет никакого прямого или стоящего способа заставить это работать с Knockout. Вся предпосылка Knockout заключается в том, что все данные находятся в модели представления, и представление отражает модель представления и принимает входные данные для модели представления. Symphony2 помещает данные в представление.
Вам будет лучше использовать jQuery для выполнения DOM-манипуляций, которые вы хотите сделать.
Вы, безусловно, можете использовать наблюдаемые и вычисляемые Knockout за кулисами, если это поможет вам управлять вашими зависимостями данных, и вы даже можете разместить некоторые привязки на странице до тех пор, пока они находятся в частях DOM, которые не будут управляться ничем другим. Но объединение привязок Knockout с другой системой построения DOM не будет работать.
Других решений пока нет …