2015-07-10 101 views
1

我想组织我的(在别处定义的)变量在数组中,但是这打破了双向绑定。我不明白为什么我可以直接绑定到一个变量,但不是间接的。我想这是一个愚蠢的错误。 实施例here(的jsfiddle)或更低:ngModel与阵列

HTML:

<div ng-controller="MyCtrl"> 
<input ng-model="test1"></input> 
<input ng-model="test2[0]"></input> 
<p>{{test1}}</p> 
</div> 

使用Javascript:

var myApp = angular.module('myApp',[]); 
function MyCtrl($scope) { 
    $scope.test1 = 'text goes here'; 
    $scope.test2 = [$scope.test1]; 
} 

正如你可以看到第一输入正确绑定到变量并进行更新,而第二个是初始值,但不受限制。

回答

1

实际上它在工作。见https://jsfiddle.net/ryekxkpL/2/

$scope.test2[0]$scope.test1副本,所以它是一样的,如果你有$scope.test2 = ['text goes here'];改变也不会影响$scope.test1

+0

谢谢。我有没有把你说得对:绑定工作,但它绑定到一个副本?我如何防止它绑定到副本? – F43nd1r

+1

这就是JS的工作方式。如果你把一个变量放到一个数组中,你将存储它的值,而不是变量。请参阅http://stackoverflow.com/questions/5865094/how-can-i-store-reference-to-a-variable-within-an-array#answer-5865121 – kiswa

+0

我接受了答案,因为它在技术上是正确的,尽管它并不能解决问题本身。我将尝试将这些原始变量包装在一个对象中,这样我就可以将该对象的引用复制到该数组中。编辑 - 这工作。它需要更多的代码。 https://jsfiddle.net/h8xstepp/ – F43nd1r