ngModel,设置整个对象,而不仅仅是ngOptios中的值

ngModel, set a whole object and not only its value from ngOptios

本文关键字:ngOptios 不仅仅是 对象 设置 ngModel      更新时间:2023-09-26

我只是不知道如何将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],而不是整个对象。我怎样才能做到这一点?

附言:我不想访问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将只包含选定的值,而不是像上面的代码那样包含整个对象。

您需要更改标记。ng-options表达式中的as关键字变魔术。

下面的表达式将对象属性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;