【发布时间】:2015-09-04 22:51:57
【问题描述】:
在 Angular 1.4 中,我使用 ngOptions 指令基于如下所示的对象使用 <option> 标签填充 <select> 标签:
{black: '#000000', red: '#FF0000', ...}
使用ng-options="value as key for (key, value) in vm.colors" 效果很好,但现在我想为每个与键匹配的选项标签添加一个类(例如'.black'、'.red')。我的想法是简单地找到option 元素并使用addClass(),但我无法获取这些元素。 (注意:我没有使用 jQuery,并且希望避免为此添加它。)
我希望能够将$element.find('option') 的结果绑定到我的视图模型,然后使用$scope.$watch('vm.options', function() {...}) 观看它,但是当我将vm.options 登录到控制台时,我看到的只是一个空数组。
我在这里错误地使用了$scope.$watch 吗? $element 有问题吗?我的控制器是否无法访问ngOptions 范围内的元素?还是我只是犯了一个愚蠢的错误?
任何帮助将不胜感激...在此先感谢!
【问题讨论】:
-
你为什么不尝试使用 ng-class 而不是使用 $element.select?并且使用手表总是不是一个好策略。它可能会减慢您的应用程序
-
我同意不想使用 $watch,这正是我的故障排除导致我的地方。你能举例说明在这种情况下如何使用 ngClass 吗?
-
我不确定,但根据源代码中的这条评论,我认为这个问题是 jqLite 特有的:github.com/angular/angular.js/blob/v1.4.0/src/ng/directive/…
-
这绝对是一个绑定问题,我的选项变量在摘要期间没有触发更新。在我原来的 jsfiddle 的这个分支中,我可以使用带有 ngClick 的按钮获取选项:jsfiddle.net/sscovil/x1bh3jmL
标签: javascript angularjs ng-options jqlite