我有一个对象数组,这些对象具有属性。
由于ng-repeat - >我希望能够修改其中一个对象的属性。我所做的更改也在原始数组中完成
我已经尝试正确地格式化我的数组,以便继承是正确的:当我更改ng-repeat时,它会在$ scope中发生变化。但它并没有进入原始阵列。
我不知道如何更改数据/数组以使其正常工作。
我该怎么办?如何转换数据?
here is a fiddle that shows all this
ps:我已尝试使用父作用域,但正如您在我的示例中所看到的那样,我甚至没有成功:(无论如何,建议尽可能避免使用它
这里是JS代码:
var myApp = angular.module('myApp',[]);
myApp.controller('myController', function ($scope) {
//source array
var origine = [
{id:"1",name:"elem1"},
{id:"2",name:"elem2"},
{id:"3",name:"elem3"} ];
//what I am doing now
$scope.element = origine[1];
//i'd like to transform the array so that I have inheritance and I can avoid using parent scope
var reference = [];
var i =0;
for (var key in origine[2]) {
if (origine[1].hasOwnProperty(key)) {
reference[i] = {prop:origine[2][key]};
i++;
}
}
$scope.element2 = reference;
$scope.element3 = origine[0];
$scope.check = function()
{
//to check if the source array is modified
console.log(origine);
}
});
和HTML:
<div ng-app="myApp">
<div ng-controller="myController">
--------------- BASIC example -----------------
<br/> Repeat scope
<div ng-repeat="property in element">
<input ng-model="property"/>
</div>
<br/>"Parent"
<input ng-model="element.name"/>
<br/><input type="button" ng-click="check()" value="check origine"/>
<br/><br/>--------------- Trying inheritance -----------------
<br/> Repeat scope
<div ng-repeat="property in element2">
<input ng-model="property.prop"/>
</div>
<br/> "Parent"
<input ng-model="element2[1].prop"/>
<br/><input type="button" ng-click="check()" value="check origine"/>
<br/><br/>--------------- Trying parent scope -----------------
<br/> Repeat scope
<div ng-repeat="property in element3">
<input ng-model="$parent.property"/>
</div>
<br/> "Parent"
<input ng-model="element3.name"/>
<br/><input type="button" ng-click="check()" value="check origine"/>
</div>
</div>
答案 0 :(得分:0)
那是因为变量是通过引用分配的。
尝试直接将数组分配给作用域并操作该数组,或者创建一个范围方法来推送,拼接,更新该私有数组
答案 1 :(得分:0)
如果我理解你的问题是正确的,你可以通过按键来引用属性来更新它:
<div ng-repeat="(key, property) in element">
<input ng-model="element[key]"/>
</div>