gpt4 book ai didi

angularjs - 延迟 Angular 指令

转载 作者:行者123 更新时间:2023-12-02 04:58:49 26 4
gpt4 key购买 nike

我有一个由自定义 AJS 指令使用的通用 AJS 服务。
我需要保留我的指令,直到服务中的 promise 得到解决。据我所知,这是通过 directivecontroller 完成的,但除了路由之外,我没有看到任何示例。

如何在服务 promise 得到解决之前延迟我的指令?

enter image description here

最佳答案

我也有类似的情况。我的指令必须等待第三方库完成一些 DOM 操作。我使用重试函数每 50 毫秒检查一次,看看我需要的 DOM 元素是否存在。

在指令中:

Utils.retry(function() { return !!$(selector)[0]; }, 50, 10).then(function() {         
doSomethingInterestingWith($(selector));
});

重试函数(我在 Utils 服务中定义了它):

var retry = function(fn, interval, maxTries) {
var result, deferred;
deferred = $q.defer();

// if we get a result, return it
result = fn();
if (result !== false) { deferred.resolve(result); }

else {
// if we've run out of tries, return false
if (maxTries) { maxTries -= 1; }
if (maxTries === 0) { deferred.reject('timed out'); }

// otherwise try again after interval
else {
$timeout(function() {
deferred.resolve(retry(fn, interval, maxTries));
}, interval);
}
}

return deferred.promise;
};

Utils.retry = retry;

参见 plunk一个工作示例。

关于angularjs - 延迟 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18923888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com