我只是,无法弄清楚如何设置我的ng-model
来包含select的值,而不是它自己的对象。
HTML
<select name="status"
data-ng-model="search.status"
data-ng-options="s.label for s in statuses">
</select>
$scope.statuses = [
{ label: ' - si/no - ', value: '' },
{ label: ' Migrated ', value: 0 },
{ label: ' Active ', value: 1 },
{ label: ' Canceled ', value: 2 },
{ label: ' Un-confirmed ', value: 3 },
];
$scope.search.status = $scope.statuses[0];
结果将是:
stdClass Object
(
[label] => - si/no -
[value] =>
)
现在,我只想要[value]
,而不是整个对象。我怎样才能做到这一点?
P.S。我不想访问object->value
,我只想要我的x
变量,以包含该值。
我之前有这个,它正在运作:
<select name="status" class="txt" data-ng-model="search.status">
<option value=""> - ALL - </option>
<option value="0"> Migrated </option>
<option value="1"> Active </option>
<option value="2"> Canceled </option>
<option value="3"> Un-confirmed </option>
</select>
我的search.status
只会包含所选的值,而不是像上面代码那样的整个对象。
答案 0 :(得分:1)
您需要更改标记。 as
表达式中的ng-options
关键字是神奇的。
下面的表达式将对象属性s.value
设置为模型,但s.label
仍然是<option>
元素的标签(我认为这是你想要的)。
<select name="status"
ng-model="search.status"
ng-options="s.value as s.label for s in statuses">
</select>
当然,必须修改控制器中的模型值初始化(如@Orangepill所述):
$scope.search.status = $scope.statuses[0].value;