3

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

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

当用户单击复选框时,该项目将更新为选定列表(得到这个工作)

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

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

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

4

1 回答 1

7

我看到了几件小事:

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/

于 2012-03-08T04:52:23.517 回答