0

如果我在如下的对象值中硬编码,AngularJS 似乎没有显示我的默认值(模型)供选择。

html

<select ng-model="defaultOption" ng-options="o.vala for o in options"></select>

javascript

$scope.options = [ 
    {vala: "value1a", valb: "value1b"}, 
    {vala: "value2a", valb: "value2b"} 
];
$scope.defaultOption = {vala: "value1a", valb: "value1b"};

但是,如果我更改$scope.defaultOption$scope.options[0],我的默认选项会显示在 select 上没有问题。

为什么会发生这种情况,有什么办法可以保留

$scope.defaultOption = {vala: "value1a", valb: "value1b"};

而不是使用间接引用?

jsfiddle:http: //jsfiddle.net/64ycY/8/

(取消注释其他 $scope.defaultOption 以进行比较)

4

1 回答 1

0

这是一种可能的解决方案,如上面的问题评论中所讨论的,使用 underscore.js (实际上可以用一个小函数来完成,而不是拉入 underscore.js)

var app = angular.module('myApp', []);

app.controller('MainController', function($scope) {
    $scope.options = [ 
        {vala: "value1a", valb: "value1b"}, 
        {vala: "value2a", valb: "value2b"} 
    ];
    var setDefaultOption = function(option) {
        $scope.defaultOption = _.findWhere($scope.options, option);
    }
    setDefaultOption({vala: "value1a", valb: "value1b"});
});

http://jsfiddle.net/Dogbert/64ycY/9/

于 2013-06-10T13:13:10.333 回答