一尘不染

如何使angular.js重新评估/重新编译内部html?

angularjs

我正在修改其内部html的指令。到目前为止的代码:

.directive('autotranslate', function($interpolate) {
    return function(scope, element, attr) {
      var html = element.html();
      debugger;
      html = html.replace(/\[\[(\w+)\]\]/g, function(_, text) {
        return '<span translate="' + text + '"></span>';
      });
      element.html(html);
    }
  })

它起作用,除了内部html不按angular求值。我想触发element的子树重估。有没有办法做到这一点?

谢谢 :)


阅读 316

收藏
2020-07-04

共1个答案

一尘不染

你必须$compile像你的内部html一样

.directive('autotranslate', function($interpolate, $compile) {
    return function(scope, element, attr) {
      var html = element.html();
      debugger;
      html = html.replace(/\[\[(\w+)\]\]/g, function(_, text) {
        return '<span translate="' + text + '"></span>';
      });
      element.html(html);
      $compile(element.contents())(scope); //<---- recompilation 
    }
  })
2020-07-04