【问题标题】:How to delete all entries from list?如何从列表中删除所有条目?
【发布时间】:2015-12-22 10:23:49
【问题描述】:

我正在尝试使用 Angular js 从列表中删除所有条目。我有两个指令,我在两个使用共享服务的指令之间进行通信。我可以在我的列表中添加条目。

我想在单击删除按钮时删除我的列表。我清空了我的阵列,但我在服务时清空了我的阵列,因此它不会反映在我的视图中。如何清空我的清单?

这是我的代码

https://jsfiddle.net/8fjhLqnw/4/

我就这样删除

vm.delete = function() {
   vm.data = [];
}

这并没有反映我的观点

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope angular-ui-router


    【解决方案1】:

    要从 Angularjs 的列表中删除所有条目,您可以执行以下操作

    $scope.students.splice( $scope.students.indexOf(student), 1);
    

    【讨论】:

      【解决方案2】:

      使用vm.data.length = 0; 清除数组。如果您分配一个新数组,它将不会绑定到视图。

      【讨论】:

        【解决方案3】:

        试试这个:

        vm.delete = function() {
            vm.data.length = 0;
        }
        

        因为您使用f.data = sharedData.data 将数据放入控制器的范围内,所以将共享相同的数组实例,因此在sharedData.data 上的修改将在f.data 上看到,因为它们是相同的。 通过sharedData.data = [],您将数组的一个新实例分配给sharedData.data。 从那时起,f.data 和sharedData.data 是独立的实例,对sharedData.data 所做的任何修改都不会影响f.data。

        解决此问题的另一种方法:

        .controller('f', function($scope, sharedData) {
            this.data = sharedData; // and not this.data = sharedData.data
        })
        

        并将数据引用为f.data.data。这样您就可以放入新的数组实例,因为您可以通过sharedData 直接访问它。

        【讨论】:

          猜你喜欢
          • 2013-04-24
          • 2014-09-15
          • 1970-01-01
          • 2012-04-07
          • 1970-01-01
          • 2011-12-20
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          相关资源
          最近更新 更多