当 ng 选项的值和标签等效时出现错误
Bug when value and label of ng-options are equivalent?
如果我从 $scope.$watch 语句中设置 ng 选项,我遇到了问题。
以下作品: <select ... ng-options="x.val as x.id for x in options"></select>
但这不会: <select ... ng-options="x.val as x.val for x in options"></select>
Plunker显示我的问题 - 单击"更新选项"
似乎如果在选项之前设置了模型的值,并且标签和值是等效的,则模型将不匹配任何可用选项。
这是一个错误,还是我做错了什么?
示例控制器代码:
$scope.myModel = 'Two';
$scope.$watch('loadTrigger', function(newValue, oldValue) {
if (newValue == oldValue) { return; }
$scope.options = [{id: 1, text: 'One'}, {id: 2, text: 'Two'}...];
})
示例视图:
<select ng-model="myModel" ng-options="x.text as x.text for x in options">...</select>
当监视触发并更新选项时,选择将显示空白或默认选项,而不是预期的"二"。 但是,如果标签和值不同(甚至略有不同),则一切按预期工作
这是 Angular 如何将选择选项与绑定模型相关联的模糊(对我来说)领域之一。
简而言之,添加track by
(并且不使用select as
)可以解决此问题:
<select ng-model="textLabel"
ng-options="x.text for x in dynamicOptions track by x.text">
<option value="">[No Value]</option>
</select>
编辑:前段时间我发现这个问题在Angular的github上讨论过,没有track by
的方法在1.2.x Angular ->中工作,因此是模糊的部分
相关文章:
- YouTube API v3哈希标签搜索错误结果
- HTML上的Webpack JSX错误<来源>标签
- JS中的HTML5视频标签错误检测
- 调用$.get函数时JQuery中出现无效标签错误
- Parsley.js-将标签值附加到错误消息中
- 使用Javascript在模态内部的标签上显示错误消息不起作用
- 未捕获的类型错误:对象#<对象>没有方法'substr'带标签的标记
- 使用标签页导航时Chrome Windows中的Angular ng-select错误
- PHP 嵌入式 JavaScript 解析错误 PHP 标签导致“语法错误:预期的表达式,得到<”
- Angular / JADE - 为什么我在尝试在 ng-href 属性中使用 Angular 标签时收到错误“意外令牌
- 我在 html5 音频标签中播放音频时收到 [对象媒体错误]
- 当 ng 选项的值和标签等效时出现错误
- <嵌入>或者<对象>标签视频播放错误处理程序-JavaScript
- 表单:输入标签抛出错误弹簧 MVC
- 对 CSS 错误标签进行材料化处理
- 一段时间后隐藏与 angularjs 表单验证一起显示的错误标签
- 如何识别错误标签的位置
- 显示错误标签的ExtJs时间表
- jQuery从HTML块中删除错误标签
- JQuery验证插件:如何使错误消息成为错误标签中的一个属性