AngularJS选择不显示模型对象

时间:2013-06-10 12:15:32

标签: javascript angularjs

如果我在对象值中进行硬编码,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],我会在选择没问题时显示默认选项。

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

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

而不是使用间接引用?

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

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

1 个答案:

答案 0 :(得分: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/