$ compile完成Angular时如何捕获事件

时间:2014-08-13 14:28:09

标签: angularjs

我有以下代码......

var html = angular.element("<div><h1>{{var}}</h1></div>");
var compiled = $compile(html.contents())(scope);
setTimeout(function(){
  dialogService.openModal(compiled[0].outerHTML);
},100);

如果您注意到我需要在处理编译时使用超时。我尝试使用$ timeout $ evalAsync和$ interval似乎没有完全模仿这种行为。

有人可以帮助我更好地理解为什么其他模式不起作用但是这样做了吗?

1 个答案:

答案 0 :(得分:2)

你可以使用watch而不是在编译完成后将其销毁(watch方法返回在函数中调用的驱逐舰会破坏手表 - 如果这样做有意义的话)

var html = angular.element("<div><h1>{{var}}</h1></div>");
var compiled = $compile(html.contents())(scope);
destroyWatch = $scope.$watch(
  function (){
    return compiled;
  },
  function (newValue, oldValue){
    if(newValue !== oldValue){
      dialogService.openModal(compiled[0].outerHTML);
      destroyWatch()
    }
  }
)