Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除视图模型触发foreach内部的函数_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除视图模型触发foreach内部的函数

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

我正在和一个奇怪的问题斗争,我的想法也快用完了

问题是,我的视图模型在foreach中单击时触发了函数。所以在这种情况下,如果我点击div menuConnections,testcall函数将被触发。即使我向testcall发送其他值(例如div id),当我单击menuConnections时也会发送相同的值

如何停止此操作并仅在单击DivWhoCalls时强制执行testcall?
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")