【发布时间】:2013-06-10 12:15:32
【问题描述】:
如果我在对象值中硬编码如下所示,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 以进行比较)
【问题讨论】:
-
我认为是因为angularjs在这里寻找对象相等
-
@ArunPJohny 是对的。您可以创建一个函数(或从 underscore.js 获取)并使用 that 在
$scope.options中查找与您的对象匹配的元素。 -
@Dogbert 如果你能提供一个例子,那就太好了。我不太清楚如何在使用 select 时让 angularjs 引用一个函数。
-
@dk123,请查看我的回答。
标签: javascript angularjs