angularjs ngModel 未 selecting select 输入中的选项
angularjs ngModel not selecting option in select input
ngModel 对于输入类型文本和 select 的工作方式是否不同?
select 控件未 select 编辑以反映初始模型值。
当我更改 select 的值时,input 和 currentUser.field 也会更改,但是如果我将 input text 的值更改为另一个键,select 不会发生任何变化。
{{currentUser.field}} // show correct field field key (number) val
// ng-model works => show correct field key (number) val
<input ng-model="currentUser.field" type="text" />
// <option value="?" selected="selected" label=""></option> is selected
<select ng-model="currentUser.field"
ng-options='item.key as item.value for item in currentUser.collections.field '>
</select>
// only works with input text and {{currentUser.field}}
<button ng-click='currentUser.field = 305'>select field (int)</button>
<button ng-click='currentUser.field = "305"'>select field (string)</button>
您的代码应该可以正常工作,除非您将 currentUser.field
的值设置为不在您的选项中:
var app = angular.module('app', []);
app.controller('myController', function($scope) {
$scope.currentUser = {
collections: {
field: [{
key: '1',
value: 'one'
}, {
key: '2',
value: 'two'
}, {
key: '3',
value: 'three'
}]
}
};
$scope.currentUser.field = "2";
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app='app' ng-controller='myController'>
<h3>expression</h3>
{{currentUser.field}}
<h3>input</h3>
<input ng-model='currentUser.field' type='text'>
<h3>select</h3>
<select ng-model='currentUser.field' ng-options='item.key as item.value for item in currentUser.collections.field'></select>
<h3>buttons</h3>
<button ng-click='currentUser.field="305"'>305</button>
<button ng-click='currentUser.field="1"'>1</button>
</div>
ngModel 对于输入类型文本和 select 的工作方式是否不同? select 控件未 select 编辑以反映初始模型值。
当我更改 select 的值时,input 和 currentUser.field 也会更改,但是如果我将 input text 的值更改为另一个键,select 不会发生任何变化。
{{currentUser.field}} // show correct field field key (number) val
// ng-model works => show correct field key (number) val
<input ng-model="currentUser.field" type="text" />
// <option value="?" selected="selected" label=""></option> is selected
<select ng-model="currentUser.field"
ng-options='item.key as item.value for item in currentUser.collections.field '>
</select>
// only works with input text and {{currentUser.field}}
<button ng-click='currentUser.field = 305'>select field (int)</button>
<button ng-click='currentUser.field = "305"'>select field (string)</button>
您的代码应该可以正常工作,除非您将 currentUser.field
的值设置为不在您的选项中:
var app = angular.module('app', []);
app.controller('myController', function($scope) {
$scope.currentUser = {
collections: {
field: [{
key: '1',
value: 'one'
}, {
key: '2',
value: 'two'
}, {
key: '3',
value: 'three'
}]
}
};
$scope.currentUser.field = "2";
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app='app' ng-controller='myController'>
<h3>expression</h3>
{{currentUser.field}}
<h3>input</h3>
<input ng-model='currentUser.field' type='text'>
<h3>select</h3>
<select ng-model='currentUser.field' ng-options='item.key as item.value for item in currentUser.collections.field'></select>
<h3>buttons</h3>
<button ng-click='currentUser.field="305"'>305</button>
<button ng-click='currentUser.field="1"'>1</button>
</div>