简体   繁体   English

AngularJS选择不显示模型对象

[英]AngularJS select not showing model object

AngularJS doesn't seem to be showing my default value (model) for select if I hard code in an object value like the following. 如果我像下面这样硬编码对象值,AngularJS似乎没有显示我的默认值(模型)。

html : html

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

javascript : javascript

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

Yet if I change $scope.defaultOption to $scope.options[0] , I get my default option showing on the select no problem. 但是,如果我将$scope.defaultOption更改$scope.defaultOption $scope.options[0] ,则我的默认选项显示在select上没有问题。

Why is this happening, and is there a way I can keep 为什么会这样,有没有办法我可以保持

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

instead of using the indirect referencing? 而不是使用间接引用?

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

(uncomment the other $scope.defaultOption for comparison) (取消注释其他$ scope.defaultOption以进行比较)

Here's one possible solution, as discussed in the question comments above, using underscore.js (could just really be done with a small function instead of pulling in underscore.js) 正如上面问题注释中所讨论的,这是一个使用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/ http://jsfiddle.net/Dogbert/64ycY/9/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM