我从指令中发出api调用。有一个条件可以显示指令。我正在用ng-show来处理。但是,当html第一次加载时,即使ng显示标志为false,也会执行api调用。
我只想在ng-show标志为真时第一次调用api .更改这个ng显示标志后,我不想调用api。
我做过这样的事。
angular.module("module").directive("customDirective", function(){
return {
templateUrl : "cutomTemplate.html",
replace : true,
scope : {},
link : {
apicall();
}
};
});<custom-directive ng-show="value === 1"></custom-directive> 发布于 2015-01-10 14:43:11
这是我想出的一个解决办法。这包括在指令范围内注册ngShow属性上的监视表,然后在进行api调用后将其取消注册。看我的小提琴,http://jsfiddle.net/cmyworld/u57dw8ws/
该指令现在看起来如下:
angular.module("module").directive("customDirective", function () {
return {
scope: {
ngShow: '='
},
link: function (scope, element, attr) {
var observeFn = scope.$watch('ngShow', function (value) {
if (value) {
console.log('Making api call');
observeFn(); // degister after first callback,
}
});
}
};
});如果您一次又一次地显示隐藏元素,ng-if可能无法工作。
https://stackoverflow.com/questions/27877171
复制相似问题