javascript - AngularJS : directive inside ng-repeat not respecting new order

标签 javascript angularjs angularjs-directive angularjs-ng-repeat

首先,here's the issue reproduced in Plunker .

基本上我有一个指令,它将根据 ng-repeat 中的某些信息插入一些元素。 。对于我的应用程序,我使用了一种非常相似的方法,它插入 <img> , <video> ,或<audio>基于 mime 类型的元素。

您将看到,当数组中的项目重新排序时,ng-repeat正在使用时,该项目传递到pageStyle指令不再与新命令保持同步。它似乎保留了之前的位置。

app.directive('pageStyle', function () {
  return {
    restrict: 'A',
    scope: {
      pageStyle: '='
    },
    replace: true,
    link: function (scope, element, attrs) {
      var ele;
      switch (scope.pageStyle) {
        case 'bold':
          ele = angular.element('<b>bold</b>');
          break;
        case 'italics':
          ele = angular.element('<i>italics</i>');
          break;
        case 'strike':
          ele = angular.element('<strike>strikethrough</strike>');
          break;
      }
      element.append(ele);
    }
  };
});

所以我想我的主要问题是当ng-repeat内的订单时如何获得重新评估的指令已更改。

最佳答案

这是因为使用了“track by”。 “track-by”不会完全重建 dom 元素,从而提高 ng-repeat 渲染的性能。 http://www.bennadel.com/blog/2556-using-track-by-with-ngrepeat-in-angularjs-1-2.htm

您的问题需要重新渲染。因此,删除“跟踪依据”。 您可以通过在 pageStyle 范围变量上添加监视来检查问题。这将使您清楚地了解问题。

关于javascript - AngularJS : directive inside ng-repeat not respecting new order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432002/

相关文章:

javascript - 使用 jQuery 弹出模态框

javascript - 处理 404 错误而不在日志中转储默认错误。

javascript - Angularjs - 模态弹出窗口

angularjs - 无法在 Controller 中调用工厂(angularjs)

angularjs - 范围拒绝更新

javascript - AngularJS 多个指令要求 ngModel

javascript - 滚动到特定部分,一开始很平滑,但随后会跳/移到屏幕下方

javascript - 如何通过 Google Analytics 中的异步代码跟踪 Google AdSense 统计信息?

仅当条件为 true 时才使用 AngularJS 指令

javascript - Angular Directive(指令)中的 CSS