【问题标题】:AngularJS not removing results within HTMLAngularJS 不删除 HTML 中的结果
【发布时间】:2012-08-08 17:42:11
【问题描述】:

是否有强制角度更新/重新编译绑定中的变量?当我将我的数组(在我的 HTML 中定义为一个 for 循环)设置为等于 [] 并且它没有接受它时,我遇到了一个问题。有什么想法吗?

【问题讨论】:

  • angular 在摘要循环中触发 DOM 更新,因此您可以尝试调用 Scope.$digest() - 请参阅 docs.angularjs.org/api/ng.$rootScope.Scope> 了解更多信息。话虽如此,直接调用 $digest 通常是非常糟糕的主意,所以我想我们在您的应用程序设计中遗漏了一些东西。您能否发送一个 jsFiddle 更好地说明您的用例?
  • 您能否提供一个 jsfiddle 演示问题。这会很有帮助。
  • 如果您使用的是外部库/插件,Scope.$digest() 可能是您的答案,但如果不是这种情况,那么我不会去那里 - 还没有。
  • 完美。 $scope.$digest 完美运行!

标签: angularjs


【解决方案1】:

一种解决方法是确保使用相同的数组引用。每当我想将所有元素更新为绑定数组时,我一直在这样做:

myArray.length = 0;
angular.forEach(newArray, function(item){
   myArray.push(item);
})

// Note: try without this line first as it isn't always necessary
$scope.$digest();

使用myArray.length = 0 清除保留对数组的引用的数组,请参阅this post 了解更多信息。

您也可以使用通常的spliceunshift 分别删除和添加项目到数组的开头。

【讨论】:

  • 你的答案几乎是正确的。能否请您添加“$scope.$digest();”作为最后一行,然后我将您的答案设置为已接受。
  • 我添加了带有免责声明的代码只是因为我从未使用过它(至少使用 ng-repeat)。很高兴认识伙计们,以防我将来遇到绑定问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
相关资源
最近更新 更多