DOM 操作不适用于 ng-view

DOM manipulation not working with ng-view

这里代码太多,请见谅。

我有一个基本应用程序,它只有一个模块、控制器和 ng-view/routProvider。

在我的控制器中,如果我执行以下操作,console.log(angular.element('div').length) 控制台会显示我有 10 个 DIV 元素。这是对的。

然而,当我试图通过 angular.element('div').remove() 操作所述 DOM 元素时,只有 ng-view 之外的 DOM 元素被删除。

有人可以解释一下这是怎么回事吗?非常感激。

编辑: 我只是注意到,如果我执行删除然后运行 ​​angular.element('div').length,长度会更改为 0,但 ng-view 内容保持不变。所以我的猜测是在我删除元素后视图没有更新..

如果您使用的是AngularJs,那么您需要让DOM与您的同步 数据来自 AngularJs.

这是最简单的例子。

var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  $scope.items = [{
    name: 'A'
  }, {
    name: 'B'
  }, {
    name: 'C'
  }, {
    name: 'D'
  }, ];

  $scope.remove = function() {
    $scope.items.splice(1, 2);
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="MainCtrl">

  <ul ng-repeat="item in items">
    <li>{{ item.name }}
  </ul>

  <button type="button" ng-click="remove()">remove</button>

</div>

最初,数组中有 4 个项目,直到用户点击 "remove" 按钮 从数组中删除 2 个项目。 DOM 根据数组的变化自动更新。