2013-09-03 2 views
2

В AngularJS, я могу успешно связывать текстовые материалы для элементов массивов:Привязка к элементам массивов в AngularJS

<input type="text" ng-model="foo[2]" /> 

Это допускается, или это просто работа случайно?

При попытке связать select элементы или ввод флажок для элементов массива они не могут работать - то есть select элемент не изменяет отображаемый, или связанный, значение по выбору и флажок не отображается клеща при нажатии.

Я что-то упустил?


Update: Он работает в JSFiddle: http://jsfiddle.net/azFzc/

ответ

2

Это работа на отдельных элементах

Посмотрите этот jsfiddle http://jsfiddle.net/fStE7/

HTML

<div ng-app> 
<div ng-controller="MyController"> 
    Select 
<select ng-change="changed()" 
     ng-options="option.value as option.label for option in options" ng-model="ar[0]"> 
</select> 
</div> 
</div> 

JS

function MyController($scope){ 
    $scope.options = [ 
     { label : "first element", value : 0 }, 
     { label : "second element", value : 1 }, 
    ] 

    $scope.ar = []; 
    $scope.ar[0] = 0; 

    $scope.changed = function(){ 
     console.log($scope.ar[0]); 
    } 
} 
+0

Да, это была ошибка в мое приложение, а не в моем понимании AngularJS. – fadedbee

1

Я изменил приведенный выше пример, чтобы показать назначение не numeric массива посредством привязки. Что наиболее полезно при работе с более сложными данными или когда ваш массив использует ключевую систему для обновления и получения значений.

https://jsfiddle.net/9obtkoa7/

HTML

<div ng-app> 
<div ng-controller="MyController"> 
    Select 
<select ng-change="changed()" 
     ng-options="option.value as option.label for option in options" ng-model="ar['SomeId']"> 
</select> 
</div> 
</div> 

JS

function MyController($scope){ 
    $scope.options = [ 
     { label : "first element", value : '1' }, 
     { label : "second element", value : '2' }, 
    ] 

    $scope.ar = []; 
    $scope.ar['SomeId'] = '1'; 

    $scope.changed = function(){ 
     console.log($scope.ar['SomeId']); 
    } 
} 
Смежные вопросы