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