为select元素angularJS设置选定的值

时间:2014-10-31 12:55:06

标签: javascript angularjs

我的代码就像这样

    <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/

4 个答案:

答案 0 :(得分:3)

首先,{"name": "65"}数组中没有colors个对象。但即使你试图选择选项{"name": "55"},它也行不通。原因是$scope.myclass不等于colors数组中的任何元素。

Angular比较对象以将相应的选项设置为选中,并且只有当一个对象相同的对象时,它才等于另一个对象。因此,要正确设置所选值,您必须为colors数组中的对象提供引用

$scope.myclass = $scope.colors[1];

答案 1 :(得分:1)

你可以通过以下方式做到:

$scope.myclass = $scope.colors[1];

请见http://jsfiddle.net/9d0f8sdj/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>

http://plnkr.co/edit/YLFgjILNUC0RP2aBAT6q?p=preview