更新过滤后的对象

时间:2016-09-23 07:55:27

标签: javascript angularjs filter angularjs-scope

我有一个数组

$scope.items = [{id:1 , name:'john'},{id:2, name:'doe'}]; 

现在我正在从数组中过滤对象

$scope.newItem = $filter('filter')($scope.items, {id: 1})[0];

然后,我在更新表单中使用$ scope.newItem但是当我输入字段时,原始数组中的对象($ scope.items)也在变化。任何人都可以帮助我做错了什么。

有关详细说明,

我正在做两个步骤。在第一步中,我将获取所有项目并存储在$ scope.items中。然后在第二步,从项目列表点击编辑我过滤该ID的对象,这里让1,

$scope.newItem = $filter('filter')($scope.items, {id: 1})[0]; 

然后在显示newitem之后我想更新它。当我输入内容来更新newitem中的字段时,原始数组中的原始对象也在更新......

1 个答案:

答案 0 :(得分:0)

你正在弄乱面向对象的概念。

实际上使用'='意味着更改$ scope.items的属性会改变$ scope.newItem的相应属性,反之亦然。

如果您不想在更改下面更改原始数组,

$scope.items = [{id:1 , name:'john'},{id:2, name:'doe'}]; 

var copiedOne=angular.copy($scope.items);

然后更新复制的

$scope.newItem = $filter('filter')(copiedOne, {id: 1})[0];

我希望这适合你。