给定一个select元素,我可以将指令添加到:
<select ng-options="..." mydirective></select>
我如何在我的指令中将ng-options作为对象/数组进行访问?我想通过阅读选择并隐藏/替换它来制作下拉替代方案。
答案 0 :(得分:0)
AngularJS的Select2就是这样一个实现,你可以研究一下如何找到一种方法。
请参阅此处的来源: https://github.com/angular-ui/ui-select2/blob/master/src/select2.js
它的作用是在'elem'上搜索ng-options属性,从属性中获取范围内对象的名称,然后在该对象上设置$ watch以获取数据。从那里你可以做任何你想做的事。
ng-options需要select元素,因此您无法替换它并仍然使用ng-options。这意味着您必须将指令添加为属性。此外,它还意味着您必须考虑指令的优先级,具体取决于您要对数据执行的操作。它应该在ng-options之前还是之后运行?
ng-options的来源,可以是一个有用的研究,可以在这里找到: https://github.com/angular/angular.js/blob/6609e3da76dd898cfe85f75f23ab2e39fee65fe5/src/ng/directive/select.js#L4
考虑到所有这些,如果您不使用'select'或'ng-options'的任何功能,它们可能最终会妨碍(看到它创建<select>
元素,和<option>
子元素。创建自己的“我的选项”指令可能是一种更好的方法。