所以这有点棘手 - 我有一组ng-options选择输入的可能值。现在一个条目的实际值可能是一个数组本身(不要问为什么,它只是我的要求) - 一切正常(数组传递并可以使用)但不起作用的是选择列表是预先选择的如果值(模型)已经是提到的数组,则为相应的标签。
好的,看看这个简单的例子,你知道我的意思
$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代码......
答案 0 :(得分:1)
替换
$scope.mytest = ["acceptedByModerator","REVIEW_LATER"];
通过
$scope.mytest = $scope.testArray[0].value
工作:
http://jsfiddle.net/camus/C6Qn6/
看看这样做是否符合您的要求。 ultimatly angular正在测试一些参考相等(===)我认为。
因此在将默认值与选项值进行比较时需要牢记这一点。它不是字符串或数字的问题,而是对象是。
编辑:
不要忘记angular也会将$属性添加到$ scope中的对象。