0

我只是,无法弄清楚如何设置 myng-model以包含选择的值,而不是对象本身。

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

PS我不想访问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>

mysearch.status将仅包含选定的值,而不是像上面的代码那样包含整个对象。

4

1 回答 1

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;
于 2013-07-15T08:13:22.573 回答