0

我只是想知道在自定义指令中是否有使用 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 指令缺少什么?

4

1 回答 1

0

我建议您查看 AngularJS 文档页面。对指令是什么以及可以做什么以及最佳实践进行了深入的解释。值得一看。

AngularJS 指令

您的示例 ( ) 的第二部分template: '<div ng-model="model" ng-click="action">Click me</div>'嵌入了命令 (ie 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 $编译

于 2013-11-05T19:48:37.430 回答