【问题标题】:Delete object property doesn't work in Angular?删除对象属性在 Angular 中不起作用?
【发布时间】:2017-04-29 19:03:55
【问题描述】:

使用 delete 删除对象属性似乎不适用于 angular。 对象保持不变。 奇怪的是我可以为对象添加属性就好了。

可能是因为对象暴露在 $scope 中吗?但是我怎样才能从中删除属性呢?

这是我的代码

const {remote} = require('electron');

angular.module('myapp', []).service('db', function(){

  var data = remote.getGlobal('data');

  return {

    removeItem: function(item){
      console.log(delete data[item]); -> returns false!!
    }


  }

});

我正在从控制器调用方法:

$scope.removeAction = function(item){
  db.removeItem(item);
};

在点击按钮时调用removeAction

【问题讨论】:

    标签: javascript angularjs object


    【解决方案1】:

    目前您只是修改db 服务中的data 对象。我没有看到任何直接绑定到您的 $scope 变量的变量引用。因此,您必须再次从 db(service) 获取数据,因为您想查看 $scope 变量的变化。

    $scope.removeAction = function(item){
      //may be you have to update data variable once again
      //data = remote.getGlobal('data'); //then removeItem
      db.removeItem(item);
      //retrieve latest list from `db` service once again.
      $scope.data = db.getData(); //assumed data is collection retrieved from db.
    };
    

    【讨论】:

    • 但它也不会在 db 服务中删除它。我在删除后控制台记录了它,它保持不变,删除返回 false
    • 你确定data 对象在你尝试删除项目时已更新??
    • 它没有更新,这就是我想说的。它不会删除属性
    • nvm 我找到了原因,这是因为电子全球性的事情。如果我用一些示例对象替换它,它可以工作..
    猜你喜欢
    • 2016-01-19
    • 2012-03-14
    • 2018-02-04
    • 2017-03-27
    • 2018-02-28
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多