Javascript 在循环中动态分配事件侦听器时的角度$q.all
我发现这个细节和循环中异步操作的问题是一样的,但是$q语法仍然有问题 基本上,我有:Javascript 在循环中动态分配事件侦听器时的角度$q.all,javascript,angularjs,q,Javascript,Angularjs,Q,我发现这个细节和循环中异步操作的问题是一样的,但是$q语法仍然有问题 基本上,我有: controller: ["fooService", function(fooService) { var vm = this; vm.events = [ { iconClass: { on: "icon-is-active", off: "icon-is-not-active" }, event: "click",
controller: ["fooService", function(fooService) {
var vm = this;
vm.events = [
{
iconClass: { on: "icon-is-active", off: "icon-is-not-active" },
event: "click",
fn: function(self) { self.isActive = !self.isActive; },
isActive: fooService.foobar //initialized to true elsewhere
},
{
iconClass: { on: "icon-is-active", off: "icon-is-not-active" },
event: "mouseup",
fn: function(self) { self.isActive = !self.isActive; },
isActive: fooService.barfoo //initialized to false elsewhere
}
];
}];
需要这样做
link: function(scope, elem, attrs, ctrl) {
for (var i = 0; i < ctrl.events.length - 1; i++) {
elem[0].on(ctrl.events[i], function() {
scope.$apply(function() {
ctrl.events[i].fn(ctrl.events[i]);
});
});
}
}
(那里什么也没有发生)最后一行没有回调,当承诺解析了(var i=0;i
吗。似乎您跳过了最后一项。
<my-button ng-repeat="event in vm.events">
<i ng-class="event.isActive ? event.iconClass.on : event.iconClass.off"></i>
</my-button>
link: function(scope, elem, attrs, ctrl) {
for (var i = 0; i < ctrl.events.length - 1; i++) {
(function($event) {
elem[0].on(ctrl.events[i], function() {
scope.$apply(function() {
ctrl.events[i].fn(ctrl.events[i]);
});
});
})(event);
}
}
var promises = [];
for (var i = 0; i < ctrl.events.length - 1; i++) {
promises.push(function() {
return elem[0].on(ctrl.events[i].event, function() {
scope.$apply(function() {
ctrl.events[i].fn(ctrl.events[i]);
});
});
});
}
$q.all(promises);