如何通过自定义指令传递 AngularJS 指令
How to pass AngularJS directives through a custom directive
我只是想知道在自定义指令中使用Angular指令(即ngModel,ngClick,ngShow等)是否有最佳实践。到目前为止,我一直在创建自定义属性,然后将该属性作为指令的值传递给模板。有没有更好的方法可以做到这一点?直接调用 Angular 指令似乎更有效。
我已经看到了对隔离范围内'&ngClick'
的引用......这有什么用例?它与仅使用'&'
有何不同?
我想做什么...
<my-directive ng-model="myModel" ng-click="myAction(args)"></my-directive>
我一直在做什么...
<my-directive model="myModel" action="myAction()"></my-directive>
...
scope: { model: '=', action: '&' },
template: '<div ng-model="model" ng-click="action">Click me</div>'
编辑:根据要求,我添加了一些代码作为插图。
http://plnkr.co/edit/xOtaxYM1QsP5LmmWPcoB?p=preview
这行不通。它不能正确编译(或链接?那么通过这个传递 Angular 指令缺少什么呢?
我建议您查看AngularJS文档页面。对指令是什么和可以做什么以及最佳实践进行了深入的解释。值得一看。
AngularJS 指令
示例的第二部分(template: '<div ng-model="model" ng-click="action">Click me</div>'
)嵌入命令(即 ng-click
)。在这种情况下,应使用 $compile
编译模板。
有趣的是,文档指出:"最佳实践:建议使用指令定义对象表单。
对我来说,这意味着你应该选择使用指令的常规方式; $compile
排在第二位。这意味着你应该选择<my-directive ng-model="myModel" ng-click="myAction(args)"></my-directive>
而不是template: '<div ng-model="model" ng-click="action">Click me</div>'
。
好吧,这可能并不总是可能的;如上所述,如果您想要一个微调的答案,您应该向我们提供一个具体的用例。
AngularJS $compile
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- 在同一页面上多次使用的自定义指令 (AngularJS) 中的验证
- 无法绑定到没有指令 + angularjs 标识符的控制器
- 值未传递给指令-AngularJS
- 测试依赖于另一个指令Angularjs的指令
- 根据指令angularjs 1.2分配控制器
- 有模板问题的指令.AngularJS
- 编译指令在指令 AngularJS 中
- 我可以将 templateUrl 传递给指令 - AngularJS
- 从子指令的父指令 [angularJS] 触发子指令中的函数
- 将服务注入指令 AngularJS 和数据绑定
- 在指令 AngularJS 中解析
- 从指令 AngularJS 给出高图表正确的参数
- 获取 JSON 数据并传递给指令 Angularjs
- 点击事件后的渲染模板指令 - AngularJs
- 如何从分页指令angularjs隐藏直接页面链接
- AngularJS-关闭tile并从ngRepeat指令AngularJS中的模型加载新视图
- 触发指令AngularJs的控制器作用域
- 将定义的对象传递给另一个自定义指令angularjs