我很懒,只是张贴了jsfiddle的链接。我正在努力试图让上下文正确。如果您查看小提琴并在输入框中键入任何内容,它将呈现带有联系人的模板。您可以将鼠标悬停在它们上面并显示编辑/删除,但是当我点击它们时它不会按我想要的方式工作。如果我创建该方法,我可以让它在Contact对象上调用removeContact(),但这不是我想要的。我希望它在viewModel上调用removeContact(),但联系人不知道viewModel。显然我只是在淘汰赛,因为它非常有趣。有没有人想过如何编辑和删除我的viewModel对象上的removeContact / editContact方法?
谢谢!
以下是链接:jsfiddle
答案 0 :(得分:1)
修正版:http://jsfiddle.net/AadrF/14/
的问题:
首先,您使用${Id}
访问模板中的联系人ID。 Javascript区分大小写,因此应为${id}
(这来自Contact构造函数中的this.id
)
在模板中,当您要访问当前对象时,请使用$data
。您使用的是contact
。模板不知道到底是什么contact
。因此,您将viewModel.removeContact(contact)
更改为viewModel.removeContact($data)
。编辑联系人也一样。
从var
声明中删除viewModel
。从理论上讲,viewModel
是全局性的,也应该被knockoutjs访问,但我认为它与jsfiddle有关。