javascript - Angular : How to force recompile directive?

标签 javascript angularjs angularjs-directive

HTML:

<div ng-repeat="obj in arr">
   <custom-directive status-stored-in="obj"></custom-directive>
</div>

问题:

我为大量的 obj 内置了翻页功能。这意味着 arr 的值,代表 obj 的当前页面,将会改变。但是,status-stored-in="obj" 部分中的 obj 不会随着更改而刷新。

现在我的解决方案是在 customDirective 中添加一个 ng-if,来回闪烁它的值以强制重新编译。有没有其他等效的、更简洁的方法来处理这个问题?

编辑:

自定义指令的开始:

module.directive 'checkbox', (checkboxHooks) ->
  restrict: 'E'
  scope:
    hook: '='
    hookedTo: '='
    statusStoredIn: '='
  templateUrl: 'templates/checkbox.html'
  link: (scope, element, attr) ->

要点是它需要获取一个对象,用于存储checked 状态。可以在这里找到全部内容:[ coffee/js ].

最佳答案

在您的指令链接函数中,您需要查看 status-stored-in 的更改,然后重新编译它,例如:

   link: function(scope, element) {
    scope.$watch('statusStoredIn', function() {
      element.html(statusStoredIn);
      $compile(element.contents())(scope);
    });
   }  

关于javascript - Angular : How to force recompile directive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579849/

相关文章:

angularjs - 用指令中的外部模板的内容替换元素的 html?

javascript - 在 div 中查找子元素并使用 javascript 将它们附加到另一个子元素

javascript - 按对象值选择数组索引

angularjs + ui.bootstrap 分页错误总页数

javascript - ng-show 未在 value=true 时触发

javascript - Angular 指令调用父 Controller 函数

javascript - Angular JS 级联通知

javascript - Google 认为 api 无法正常工作

javascript - 如何仅采用Materialize Navbar所需的代码?

javascript - Angularfire ngRoute/解决问题,跳转到否则