给定一个select元素,我可以向其中添加一个指令:
<select ng-options="..." mydirective></select>
如何在指令中将ng-options作为对象/数组进行访问?我想通过读取select并隐藏/替换它来做一个下拉式选择。
发布于 2014-02-03 06:14:33
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>
子元素一样)。创建您自己的'my-options‘指令可能是更好的方法。
https://stackoverflow.com/questions/21516055
复制相似问题