ngModel,设置整个对象,而不仅仅是ngOptios中的值
ngModel, set a whole object and not only its value from ngOptios
我只是不知道如何将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;
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 事件为所有项目而不仅仅是当前项目激发
- 在加载时显示,而不仅仅是在选中时显示
- 删除 HttpCookie 不仅仅是它的值
- 脚本选择所有输入,而不仅仅是复选框
- for 循环中的 if 语句都执行,而不仅仅是一个
- 当将函数传递给方法时,为什么使用匿名函数容器而不仅仅是原始函数有效
- .slideup()删除整个ul,而不仅仅是嵌套的li
- jQuery隐藏所有trs或td,而不仅仅是一个
- 使用Maven压缩所有内容,而不仅仅是源目录
- 从数组中删除双值,而不仅仅是javascript中的重复值
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- Jquery Slider-获取滑块的每个数值?不仅仅是在mouseout上
- 我如何让jQuery在Facebook发布自动加载时做一些事情,而不仅仅是在页面加载时
- 如何使元素的宽度和高度为页面(文档)的100%,而不仅仅是窗口(浏览器)
- 在 Magnific 弹出窗口中打开所有图像,而不仅仅是发布图像
- 有没有办法使非html5支持浏览器支持html5,而不仅仅是html5标记,html5 api也是如此
- 之前每个测试都会调用每个测试,而不仅仅是一次
- ngModel,设置整个对象,而不仅仅是ngOptios中的值