ngRepeat没有正确编译$ compile指令

时间:2015-04-09 08:52:14

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个项目数组[Expression,Expression,....]我从数组中添加/删除Expression,但是ngRepeat没有正确地编译指令。

它可能是什么原因?

其中一个解决方案是,我有一个单独的表达式数组,我修改了那个,每次更改时我将“表达式”重置为[]并设置新数组,但是当这样做时UI元素闪烁(首先摘要到[]然后超时(表达式=新数组))。

// Main
scope.list = [Expressions.new(), Expressions.new()];


//constructor Expressions

function Expressions(){};
Expression.prototype = {
  id: 'generated',
  list: [
    Expression.new(), Expression.new(),... 
  ]
};


//constructor Expression

function Expression(){};
Expression.prototype = {
  id: 'generated',
  val: ''
};
<!-- Main Usage -->
<div ng-repeat="expressions in list track by $index" dir-expressions x-attrs="expressions"></div>

<!-- Expressions directive -->
<div class="Expressions_Content">
  <ul ng-sortable="attrs.sortable">
    <li ng-repeat="expression in attrs.items track by $index">
      <div dir-expression x-attrs="expression"></div>
    </li>
  </ul>
</div> 


<!-- Expression directive -->
<div>{{Value}}</div>

这是一个复杂的情况,所以我将在示例中添加一些代码片段。

1 个答案:

答案 0 :(得分:0)

正如Sunil D指出的那样,使用track by expression.id而不是$ index。