如何根据数组值预选ng-options?

时间:2014-05-21 15:38:27

标签: angularjs

所以这有点棘手 - 我有一组ng-options选择输入的可能值。现在一个条目的实际值可能是一个数组本身(不要问为什么,它只是我的要求) - 一切正常(数组传递并可以使用)但不起作用的是选择列表是预先选择的如果值(模型)已经是提到的数组,则为相应的标签。

好的,看看这个简单的例子,你知道我的意思

http://jsfiddle.net/DTn62/

$scope.testArray = [{label:"to be reviewed",value:["acceptedByModerator","REVIEW_LATER"]},
                        {label:"public",value:'acceptedByModerator'},
                        {label:"not public",value:"rejectedByModerator"},
                        {label:"scheduled for later",value:"REVIEW_LATER"}];
$scope.mytest = ["acceptedByModerator","REVIEW_LATER"]; //<-- Does not preselect select field
//$scope.mytest = "acceptedByModerator"; //<-- Works, Does preselect field

有人知道这个解决方案还是这个bug?我知道最简单的解决方案是不使用数组作为值,但不幸的是,这会导致更难看的if / else代码......

1 个答案:

答案 0 :(得分:1)

替换

 $scope.mytest = ["acceptedByModerator","REVIEW_LATER"];

通过

   $scope.mytest = $scope.testArray[0].value

工作:

http://jsfiddle.net/camus/C6Qn6/

看看这样做是否符合您的要求。 ultimatly angular正在测试一些参考相等(===)我认为。

因此在将默认值与选项值进行比较时需要牢记这一点。它不是字符串或数字的问题,而是对象是。

编辑:

不要忘记angular也会将$属性添加到$ scope中的对象。