【问题标题】:Knockout list binding with a checkbox and click handle带有复选框和单击句柄的剔除列表绑定
【发布时间】:2012-03-25 15:46:27
【问题描述】:

这是我的 jsfiddle 用于说明: http://jsfiddle.net/hawaii/gN6CT/10/

我有一个 json 对象列表,我想使用 jquery 模板将其绑定到 ul 中,在每个 li 中,我都有一个用于每个项目的复选框,以及项目详细信息。我希望它的工作方式是:

当用户点击复选框时,该项目将被更新到一个选定的列表中(得到这个工作)

当用户单击项目的详细信息时,该项目将被选中,我将在右侧显示所有详细信息。这就是我将项目详细信息放入元素中的原因。

正如您从小提琴中看到的那样,它并没有按照我想要的方式工作,即使在第一次应用 viewModel 时也会调用点击绑定,当我点击复选框时,它也会调用点击事件.

请各位淘汰大师帮我解决这个问题。 谢谢

【问题讨论】:

    标签: javascript knockout.js knockout-mapping-plugin knockout-2.0


    【解决方案1】:

    我看到了一些小事:

    1- 你不应该在同一个元素上同时使用checkedvalue 绑定。 value 绑定将附加事件处理程序,checked 绑定也是如此。在这种情况下,您只想确保设置了value 属性并且不处理任何事件,因此您可以这样做:checked:$parent.checkedPeople, attr: { value: Id }

    2- 点击绑定需要对函数的引用,而不是正在执行的函数的结果。所以,你通过了:click: $parent.selectPerson(Id())。这将在绑定期间执行函数并尝试绑定结果(这不会有效,除非结果实际上是一个函数)。另一种方法是:click: function() { $parent.selectPerson(Id()); }。然而,在标记中使用匿名函数是很难看的,所以更好的选择是简单地做:click: $parent.selectPerson。当前的$data 将作为第一个参数传递,您可以从中读取Id

    这是一个更新的小提琴:http://jsfiddle.net/rniemeyer/gN6CT/11/

    【讨论】:

    • 我正在处理一个不同的问题,但只是碰到了您在第 1 点中确定的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2014-02-14
    • 2014-07-08
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多