ngModel,设置一个完整的对象,而不仅仅是来自ngOptios的值

时间:2013-07-15 06:35:19

标签: php javascript object angularjs html-select

我只是,无法弄清楚如何设置我的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只会包含所选的值,而不是像上面代码那样的整个对象。

1 个答案:

答案 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;