这是我的jsfiddle,用于说明: http://jsfiddle.net/hawaii/gN6CT/10/
我有一个json对象列表,我想用jquery模板绑定到ul中,在每个li中我都有一个复选框,每个项目都有项目详细信息。我想要它的工作方式是:
当用户点击复选框时,该项目将更新为选定列表(已完成此工作)
当用户点击项目的详细信息时,该项目将是所选项目,我将在右侧显示所有详细信息。这就是我将项目细节放在元素中的原因。
正如你从小提琴中看到的那样,它不按照我希望的方式工作,即使首次应用viewModel也会调用click绑定,当我点击复选框时,它也会调用click事件
请你淘汰大师帮助我。 感谢
答案 0 :(得分:7)
我看到了几件小事:
1-您不应在同一元素上同时使用checked
和value
绑定。 value
绑定将附加事件处理程序,checked
绑定也是如此。在这种情况下,您只需确保设置value
属性并且不处理任何事件,因此您可以执行以下操作:checked:$parent.checkedPeople, attr: { value: Id }
2- click绑定需要对函数的引用,而不是正在执行的函数的结果。所以,你传递的是:click: $parent.selectPerson(Id())
。这将在绑定期间执行该函数并尝试绑定结果(除非结果实际上是函数,否则将无效)。另一种方法是:click: function() { $parent.selectPerson(Id()); }
。但是,在标记中使用匿名函数是很难看的,所以更好的选择就是简单地执行:click: $parent.selectPerson
。当前$data
将作为第一个参数传递,您可以阅读Id
。
这是一个更新的小提琴:http://jsfiddle.net/rniemeyer/gN6CT/11/