框架中没有任何内容可用于检查现有事件侦听器。
您能解释一下您要求不使用“服务中的辅助变量”的原因吗?
无法在函数周围添加防护的原因是什么
app.service('hostService', ['$rootScope', function ($rootScope) {
var listenerAdded = false;
this.addListener = function () {
if (listenerAdded){
return;
}
listenerAdded = true;
console.log("addListener")
$rootScope.$on("messageFromSiteToHost", function (event, data) {
action(data);
})
}
}]);
此外,如果您发现在整个应用程序中需要经常这样做,那么您可以推广实现或使用类似的方法
lodash.once
要移除样板,请执行以下操作:
app.service('hostService', ['$rootScope', function ($rootScope) {
this.addListener = _.once(function () {
console.log("addListener")
$rootScope.$on("messageFromSiteToHost", function (event, data) {
action(data);
})
});
}]);