我只想知道在自定义指令中是否有使用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指令缺少什么呢?
答案 0 :(得分:0)
我建议你看一下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>'
。
嗯,这可能并不总是可能的;如上所述,如果你想要一个微调的答案,你应该为我们提供一个具体的用例。