我的代码就像这样
<body ng-app="myApp" ng-controller="MainCtrl">
<select data-ng-model="myclass" data-ng-options="color.name for color in colors">
<option value="">-- Select Freight Class --</option>
</select>
</body>
angular.module('myApp', []).controller('MainCtrl', [
'$http', '$scope', '$filter', function ($http, $scope, $filter) {
$scope.myclass = {
"name": "65"
};
$scope.colors = [{
name: '50'
}, {
name: '55'
}, {
name: '105'
}, {
name: '110'
}, {
name: '400'
}, {
name: '500'
}];
}]);
正如您所看到的,我正在尝试将此选择的默认选定值设置为65
,但它无效。任何人都可以告诉我如何实现这一目标吗?
http://jsfiddle.net/d8kg0uys/
答案 0 :(得分:3)
首先,{"name": "65"}
数组中没有colors
个对象。但即使你试图选择选项{"name": "55"}
,它也行不通。原因是$scope.myclass
不等于colors
数组中的任何元素。
Angular比较对象以将相应的选项设置为选中,并且只有当一个对象相同的对象时,它才等于另一个对象。因此,要正确设置所选值,您必须为colors
数组中的对象提供引用:
$scope.myclass = $scope.colors[1];
答案 1 :(得分:1)
答案 2 :(得分:1)
见AngularJS Reference for Select;您可以通过选择所需值的索引来执行此操作:
angular
.module('myApp', [])
.controller('MainCtrl', ['$http', '$scope', '$filter',
function ($http, $scope, $filter) {
$scope.colors = [{
name: '50'
}, {
name: '55'
}, {
name: '65'
}, {
name: '105'
}, {
name: '110'
}, {
name: '400'
}, {
name: '500'
}];
$scope.myclass = $scope.colors[2];
}]);
因此,您想要的值也应该在$scope.colors
列表中,就像我在上面添加的那样。
你的小提琴纠正:http://jsfiddle.net/d8kg0uys/1/
答案 3 :(得分:1)
您正在将对象绑定到ng-model,而不是对象的字段。并不是那么糟糕,但在javascript中比较对象并不像在其他语言中那样简单。 https://stackoverflow.com/a/1144249/1264360
65还不在您的选项列表中,因此它默认为默认值。
<select data-ng-model="myclass.name" data-ng-options="color.name as color.name for color in colors">
<option value="">-- Select Freight Class --</option>
</select>