首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止api调用在指令中重复执行

防止api调用在指令中重复执行
EN

Stack Overflow用户
提问于 2015-01-10 14:18:43
回答 1查看 173关注 0票数 1

我从指令中发出api调用。有一个条件可以显示指令。我正在用ng-show来处理。但是,当html第一次加载时,即使ng显示标志为false,也会执行api调用。

我只想在ng-show标志为真时第一次调用api .更改这个ng显示标志后,我不想调用api。

我做过这样的事。

代码语言:javascript
复制
angular.module("module").directive("customDirective", function(){
  return {
    templateUrl : "cutomTemplate.html",
    replace : true,
    scope : {},
    link : {
        apicall();
    }
  };
});
代码语言:javascript
复制
<custom-directive ng-show="value === 1"></custom-directive> 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-10 14:43:11

这是我想出的一个解决办法。这包括在指令范围内注册ngShow属性上的监视表,然后在进行api调用后将其取消注册。看我的小提琴,http://jsfiddle.net/cmyworld/u57dw8ws/

该指令现在看起来如下:

代码语言:javascript
复制
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可能无法工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27877171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档