用knockout js改变上下文

时间:2011-06-15 04:25:58

标签: javascript knockout.js

我很懒,只是张贴了jsfiddle的链接。我正在努力试图让上下文正确。如果您查看小提琴并在输入框中键入任何内容,它将呈现带有联系人的模板。您可以将鼠标悬停在它们上面并显示编辑/删除,但是当我点击它们时它不会按我想要的方式工作。如果我创建该方法,我可以让它在Contact对象上调用removeContact(),但这不是我想要的。我希望它在viewModel上调用removeContact(),但联系人不知道viewModel。显然我只是在淘汰赛,因为它非常有趣。有没有人想过如何编辑和删除我的viewModel对象上的removeContact / editContact方法?

谢谢!

以下是链接:jsfiddle

1 个答案:

答案 0 :(得分:1)

修正版:http://jsfiddle.net/AadrF/14/

的问题:

  1. 首先,您使用${Id}访问模板中的联系人ID。 Javascript区分大小写,因此应为${id}(这来自Contact构造函数中的this.id

  2. 在模板中,当您要访问当前对象时,请使用$data。您使用的是contact。模板不知道到底是什么contact。因此,您将viewModel.removeContact(contact)更改为viewModel.removeContact($data)。编辑联系人也一样。

  3. var声明中删除viewModel。从理论上讲,viewModel是全局性的,也应该被knockoutjs访问,但我认为它与jsfiddle有关。