0

次のようにオブジェクト値をハードコーディングすると、AngularJS は select のデフォルト値 (モデル) を表示していないようです。

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 のコメントを外します)

4

1 に答える 1

0

上記の質問のコメントで説明されているように、underscore.js を使用して考えられる解決策の 1 つを次に示します (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 に答える