3

在 AngularJS 中,我可以成功地将文本输入绑定到数组元素:

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

这是允许的,还是只是偶然的?

当我尝试将select元素或复选框输入绑定到数组元素时,它们无法工作 - 即select元素不会更改选择时显示或绑定的值,并且单击复选框时不会显示勾号。

我在这里错过了什么吗?


更新:它适用于 JSFiddle:http: //jsfiddle.net/azFzc/

4

2 回答 2

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]);
    }
}
于 2013-09-03T15:43:12.963 回答
1

我修改了上面的示例以通过绑定显示非数字数组赋值。在处理更复杂的数据或数组使用密钥系统更新和检索值时,这最有用。

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']);
    }
}
于 2015-04-07T20:13:57.370 回答