如果我在对象值中进行硬编码,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进行比较)
答案 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"});
});