在 AngularJS 中,我可以成功地将文本输入绑定到数组元素:
<input type="text" ng-model="foo[2]" />
这是允许的,还是只是偶然的?
当我尝试将select
元素或复选框输入绑定到数组元素时,它们无法工作 - 即select
元素不会更改选择时显示或绑定的值,并且单击复选框时不会显示勾号。
我在这里错过了什么吗?
更新:它适用于 JSFiddle:http: //jsfiddle.net/azFzc/
在 AngularJS 中,我可以成功地将文本输入绑定到数组元素:
<input type="text" ng-model="foo[2]" />
这是允许的,还是只是偶然的?
当我尝试将select
元素或复选框输入绑定到数组元素时,它们无法工作 - 即select
元素不会更改选择时显示或绑定的值,并且单击复选框时不会显示勾号。
我在这里错过了什么吗?
更新:它适用于 JSFiddle:http: //jsfiddle.net/azFzc/
它确实适用于选择元素
看看这个 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]);
}
}
我修改了上面的示例以通过绑定显示非数字数组赋值。在处理更复杂的数据或数组使用密钥系统更新和检索值时,这最有用。
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']);
}
}