Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 onClick触发最后一项函数_Javascript_Angularjs - Fatal编程技术网

Javascript onClick触发最后一项函数

Javascript onClick触发最后一项函数,javascript,angularjs,Javascript,Angularjs,所以我有一个项目数组,所有项目都有一个名为onClick的函数,这个函数可以从ng repeat执行 然而,所发生的情况是,它不是执行所选元素的onClick,而是从最后一个元素中的最后一个元素调用函数。为什么会这样,我怎样才能防止呢 我的我已经修改了你的小提琴手,看一看,告诉我们是不是这样。 html: js: 我已经修改了你的小提琴手,看一下,告诉我们是不是这样。 html: js: 你能跳出来吗? link变量是for循环完成时links数组中的最后一个元素 因此,当您单击标记时,$sta

所以我有一个项目数组,所有项目都有一个名为onClick的函数,这个函数可以从ng repeat执行

然而,所发生的情况是,它不是执行所选元素的onClick,而是从最后一个元素中的最后一个元素调用函数。为什么会这样,我怎样才能防止呢


我的

我已经修改了你的小提琴手,看一看,告诉我们是不是这样。 html:

js:


我已经修改了你的小提琴手,看一下,告诉我们是不是这样。 html:

js:

你能跳出来吗? link变量是for循环完成时links数组中的最后一个元素

因此,当您单击标记时,$state go last destination always

好的,这是修复版本

link.onClick = (function (link) {
     $state.go(link.destination);
}((link);
只需更改onClick函数

你能跳出来吗? link变量是for循环完成时links数组中的最后一个元素

因此,当您单击标记时,$state go last destination always

好的,这是修复版本

link.onClick = (function (link) {
     $state.go(link.destination);
}((link);
只需更改onClick函数。

试试类似的方法

var myApp=angular.modulemyyapp[ui.router,AppCtrls]; myApp.configfunction$stateProvider,$urlRouterProvider{ $stateProvider.statestate1{ 网址:, 模板:状态1

}.州2{ 网址:, 模板:状态2

}; }; var ctrls=angular.moduleAppCtrls,[]; ctrls.controllerCtrl1,函数$scope,$state{ 变量链接=[{ 文本:“state1”, 目的地:“state1” }, { 文本:“state2”, 目标:“state2”//从主页更改为state2 }] $scope.destination=$state.current.name $scope.links=[] 对于变量i=0;i var myApp=angular.modulemyyapp[ui.router,AppCtrls]; myApp.configfunction$stateProvider,$urlRouterProvider{ $stateProvider.statestate1{ 网址:, 模板:状态1

}.州2{ 网址:, 模板:状态2

}; }; var ctrls=angular.moduleAppCtrls,[]; ctrls.controllerCtrl1,函数$scope,$state{ 变量链接=[{ 文本:“state1”, 目的地:“state1” }, { 文本:“state2”, 目标:“state2”//从主页更改为state2 }] $scope.destination=$state.current.name $scope.links=[] 对于变量i=0;i问题是因为for循环中存在闭包,在基本JavaScript中解决这个问题的方法与SeongHyeon Park的答案类似,但这是有角度的,所以应该使用本机forEach循环,而不是for循环

这样,循环的每个迭代都有自己的自包含范围,并且闭包不会有任何问题

因此,将循环代码更改为:

angular.forEach(links, function(link) {
    link.onClick = function(){
    console.info('click')
    $state.go(link.destination)
  }
  $scope.links.push(link)
})

问题是因为for循环中存在闭包,在基本JavaScript中解决这个问题的方法与SeongHyeon Park的答案类似,但这是有角度的,所以应该使用本机forEach循环,而不是for循环

这样,循环的每个迭代都有自己的自包含范围,并且闭包不会有任何问题

因此,将循环代码更改为:

angular.forEach(links, function(link) {
    link.onClick = function(){
    console.info('click')
    $state.go(link.destination)
  }
  $scope.links.push(link)
})

请在问题本身中包括,无论是片段还是代码,不要简单地链接到外部资源。onClick是一个控制器函数,定义为$scope.onClick=函数无需在链接上循环请在问题本身中包括,无论是片段还是代码,不要简单地链接到外部资源。onClick是一个控制器函数,定义为$scope.onClick=函数不需要在链接上循环它
link.onClick = (function (link) {
     $state.go(link.destination);
}((link);
angular.forEach(links, function(link) {
    link.onClick = function(){
    console.info('click')
    $state.go(link.destination)
  }
  $scope.links.push(link)
})