简短代码示例:http://jsfiddle.net/j2nsg/2/
JS:
function AppViewModel() {
var self = this;
self.values = ko.observableArray([{annotation:"blah2"}, {annotation:"blah4"}]);
}
$("#delete").click(function() {
var removeMe = {annotation: "blah2"};
model.values.remove(function(item) {
return _.isEqual(item, removeMe); //this is just a deep equals between objects, actual code has far more complex stuff
});
});
var model = new AppViewModel();
ko.applyBindings(model);
HTML:
<div id="Menu">
<p>Stuff In list:</p>
<select id="resultsDb" data-bind="foreach:values">
<option data-bind="text:annotation">
</select>
</div>
<br>
<a href="javascript:null()" id="delete">delete</a>
所有这一切都是在knockout中填充一个可观察的数组,并提供了一个按钮,用于在单击时删除元素。但是,如果单击该按钮,控制台将显示错误Uncaught TypeError: object is not a function
。从功能的角度来看,的所有内容都会出现。有没有办法解决这个错误(如果它甚至是一个错误)?
编辑:错误行(对于chrome)表示VM994:1,(匿名函数)
答案 0 :(得分:2)
这是由尝试调用null
而不是函数引起的。您可以使用javascript:null()
代替#
,甚至可以完全取消href
。
答案 1 :(得分:0)
我想你想要javascript:void(null)
无论哪种方式,你都应该用淘汰而不是jquery来处理你的点击。此外,通常最好不要使用a
元素作为这样的按钮。您最好使用button
或span
。