Javascript 敲除视图模型触发foreach内部的函数
我正在和一个奇怪的问题斗争,我的想法也快用完了 问题是,我的视图模型在foreach中单击时触发了函数。所以在这种情况下,如果我点击div menuConnections,testcall函数将被触发。即使我向testcall发送其他值(例如div id),当我单击menuConnections时也会发送相同的值 如何停止此操作并仅在单击DivWhoCalls时强制执行testcall?Javascript 敲除视图模型触发foreach内部的函数,javascript,knockout.js,Javascript,Knockout.js,我正在和一个奇怪的问题斗争,我的想法也快用完了 问题是,我的视图模型在foreach中单击时触发了函数。所以在这种情况下,如果我点击div menuConnections,testcall函数将被触发。即使我向testcall发送其他值(例如div id),当我单击menuConnections时也会发送相同的值 如何停止此操作并仅在单击DivWhoCalls时强制执行testcall? function profileview模型(userId){ var self=这个; self.conn
function profileview模型(userId){
var self=这个;
self.connectionRequests=ko.observearray();
self.getConnections=函数(){
$(“#menuConnections”).css({“display”:“block”});
//返回数据的其他代码
};
self.testcall=函数(数据){
警报(目标);
};;
}
连接
如果没有看到实际运行的ko.applyBindings示例,我无法确定,但请尝试更改
data-bind='click: $root.testcall("asd")
到
说明:
首先,我将$root
更改为$parent
。我不知道您的$root
是什么,但可以安全地假设您的$parent
是使用testcall
方法的VM
更重要的是,
click:
需要一个函数,但$root.testcall(“asd”)
调用返回未定义的函数。相反,我们使用从testcall
创建一个新函数,参数设置为“asd”
,此设置为$parent
,您可能需要使用绑定语法。请尝试data bind=“$root.testcall.bind($data,'asd')”
这不是您的问题,但这将生成多个#TheDivWhoCalls的实例。元素ID在pageNope上应该是uinique,在我更改为该元素后,它根本不会调用testcall。@Goran,很抱歉我遗漏了。bind
@Goran添加了一个解释
data-bind='click: $parent.testcall.bind($parent, "asd")