如何通过自定义指令传递 AngularJS 指令

How to pass AngularJS directives through a custom directive

本文关键字:指令 AngularJS 自定义 何通过      更新时间:2023-09-26

我只是想知道在自定义指令中使用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