Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 延迟角度指令_Angularjs_Directive - Fatal编程技术网

Angularjs 延迟角度指令

Angularjs 延迟角度指令,angularjs,directive,Angularjs,Directive,我有一个由自定义AJS指令使用的通用AJS服务。 我需要保留我的指令,直到服务中的承诺得到解决。 从我所读到的内容来看,这是通过directivecontroller完成的,但除了route之外,我没有看到任何其他示例 在服务承诺得到解决之前,我如何延迟我的指令 我也有类似的情况。我的指令必须等待第三方库完成一些DOM操作。我使用重试函数每50毫秒检查一次,看看我需要的DOM元素是否存在 在指令中: Utils.retry(function() { return !!$(selector)[0]

我有一个由自定义AJS指令使用的通用AJS服务。
我需要保留我的指令,直到服务中的承诺得到解决。 从我所读到的内容来看,这是通过directivecontroller完成的,但除了route之外,我没有看到任何其他示例

在服务承诺得到解决之前,我如何延迟我的指令


我也有类似的情况。我的指令必须等待第三方库完成一些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;