我试图最终比较两个对象数组中的条目,所以我创建了一个名为$ scope.oitems和$ scope.items的数组,它们都被赋予了从数据服务setItems返回的值。我的输入是ng-modelled到$ scope.items;但是,当我查看$ scope.items和$ scope.oitems时,当我更改输入字段中的内容时,它们都会更改值。我有一个对象,$ scope.thing,以及应该是原始副本$ scope.othing,两者都只有'name'和'id'属性,都在数据服务中分配,setThing,以及$ scope.name和$ scope.id分配了DATAFROMSERVICE.name和DATAFROMSERVICE.id。 $ scope.othing和$ scope.thing都会在输入只有ng-mledled到$ scope.thing时改变HOWEVER,$ scope.name和$ scope.id不要改变,这就是我想要的$ scope。 othing和$ scope.oitems,因为它们应该是从稍后要使用的服务返回的数据的副本。我在分配任何内容和oitems时做错了什么导致它们不是我服务中数据的原始副本?这是上面描述的我的问题的简化示例的小提琴
http://jsfiddle.net/Lvc0u55v/1163/
function MyCtrl($scope) {
$scope.oitems = new Array();
$scope.othing = new Object();
function setItems () {
var data = [{a:'foo', b:2}, {a:'bar', b: 1}]; //data returned from service
$scope.oitems = data;
$scope.items = data;
}
setItems();
function setThing () {
var dat = {name:'test', id: 12}; //data returned from service
$scope.othing = dat;
$scope.name = dat.name;
$scope.id = dat.id;
$scope.thing = dat;
}
setThing();
}
答案 0 :(得分:0)
您可以通过这种方式更改代码。工作代码是以下链接。
$scope.name: {{name.name}}
$scope.id: {{id.id}} (this works)
答案 1 :(得分:0)
我有一个对象
$scope.thing
,应该是原始副本$scope.othing
这是不正确的。两个变量都引用同一个对象。如果您想复制一份,请使用angular.copy()
至于$scope.name = dat.name;
....这只会被分配一次。
由于这些值是基元而非对象,因此在初始赋值为make之后,对$scope.name
或dat.name
的更改不会更改另一个。
基元没有与对象相同的继承方式
目前尚不清楚您正在寻找什么行为