javascript - KnockoutJS + Symfony2 + Twig 集合表单添加和删除项目

标签 javascript php forms symfony knockout.js

我正在尝试将 Knockout 实现到我的 Symfony2 项目中,并且我已经到了需要将集合类型集成到我的表单中的地步。我遵循了 Symfony2 文档( http://symfony.com/doc/current/reference/forms/types/collection.html )。我在SF2方面有丰富的经验。不过,我最近开始参加 knockout 。

我想知道的是如何将 symfony2 的 twig {% for bform in 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>

在我的 knockout 中,我目前有:

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 的 Angular 来看,当您点击一个操作时,让我们说 createAAction() {} 返回带有表单的 .html.twig,我在 Knockout 文档中看到的是如何从服务器检索 JSON 但这不是我的情况。我希望当页面加载当前信息时,knout 会拾取它。

如果这还不够清楚,请告诉我。

最佳答案

Knockout 不会有任何直接或有值(value)的方法来实现这一点。 Knockout 的整个前提是所有数据都在 View 模型中, View 反射(reflect) View 模型并接受 View 模型的输入。 Symphony2 将数据放入 View 中。

您会更好地使用 jQuery 来执行您想要执行的 DOM 操作。

如果这可以帮助您管理数据依赖性,您当然可以在幕后使用 Knockout 的可观察值和计算值,您甚至可以在页面上放置一些绑定(bind)只要它们位于 DOM 的各个部分中,并且不会被由其他任何东西管理。但是将 Knockout 绑定(bind)与另一个 DOM 构建系统结合起来是行不通的。

关于javascript - KnockoutJS + Symfony2 + Twig 集合表单添加和删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682240/

相关文章:

javascript - d3 json嵌套数据映射,分组条形图

javascript - 在 React 中设置状态

php - 从逗号分隔列表中添加或删除项目

PHP Hit Counter...我可以将 SESSION 转换为 COOKIE 吗?

forms - 在 Symfony2 中过滤列表?

javascript - Javascript 文件是否有类似的 JAVADOCS 脚本/工具?

javascript - 如何通过 ioncache 从数据库为标签处理程序分配标签

php - 如何对提交到sql数据库的文章进行分类?

javascript - 按钮加载和控件属性在表单提交时未更改

javascript - Bootstrap Rails 确认提交表单上的弹出窗口