【问题标题】:Refresh ng-repeat even nothing has changed即使没有任何改变也刷新 ng-repeat
【发布时间】:2017-05-05 11:53:45
【问题描述】:

我在 ng-repeat 中进行了一些 dom 操作。现在我想重置我的 DOM 以匹配 ng-repeat 循环的模型。如何强制 AngularJS 重绘 ng-repeat 内容。

Apply 不起作用显然会导致对模型的任何更改都没有。

【问题讨论】:

  • 代码...代码...代码...
  • 为什么你想在没有数据改变的情况下重新运行一次 ng-repeat? DOM 操作可以使用指令来完成,这就是它们的“设计”目的。只是想知道......

标签: javascript angularjs ng-repeat dom-manipulation


【解决方案1】:

其实你不需要做任何特殊的事情来重新绑定 Angular js 中的 DOM。 Angular JS 支持two way data binding,所以当你的模型改变时,DOM 对象会自动重新绑定修改后的内容。所以你所要做的就是重新绑定你的控制器变量,它会自动更新 DOM。

【讨论】:

    【解决方案2】:

    ng-repeat 的整体理念是遵循模型。如果你想改变内容,你真的应该改变模型。至于 dom 操作,您应该在 angular 组件或指令中执行这些操作,并再次使其遵循模型。

    如果你不这样做,你可能根本不使用 Angular。

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • 实际上,我告诉他使用指令/组件进行 dom 操作,这样他就可以使用模型作为主要来源,这是对“我如何强制... .' 被问到。
    【解决方案3】:

    如果您粘贴一些代码,那就太好了,但无论如何,例如我们有这个:

    $scope.rows = [1,2,3];
    
    <div ng-repeat="row in rows">
       {{row}}
    </div>
    

    为了使用ng-repeat 重绘相同的数据,您需要以某种方式更改范围。你可以在你的 DOM 操作之后试试这个

    $scope.rows = angular.copy($scope.rows);
    

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多