如何使 AngularJS 指令在不隔离作用域的情况下清楚地定义其依赖关系
How to make AngularJS directive to clearly define its dependencies without isolating scope
我正在编写应用程序的指令,以便利用隔离的作用域来清楚地定义其在父作用域中的依赖项。所以我总是可以在我的 HTML 组件中实现这一点
<my-directive dependency-one="x" dependency-two="y"></my-directive>
这是我的指令的代码
angular.module("myapp").directive('myDirective', [function() {
return {
restrict: 'E',
scope: {
dependencyOne: '=',
dependencyTwo: '='
},
templateUrl: "path/to/myDirective.html",
link: function($scope){
//here goes the code for linking function
}
}
}]);
但是,我已经阅读了AngularJS社区中的一些最佳实践,指出我们应该尽可能避免使用隔离范围,因为它会增加应用程序的观察者和无用的绑定。仅在编写在应用程序上重用的组件时使用独立作用域。
据我所知,我们有两种可能性:
- 我们的指令不创建子作用域
- 我们的指令创建一个子作用域,它是原型继承父作用域
我们可以通过这种方式防止创建新的范围和不必要的绑定,但它会降低指令 HTML 标记的可读性和清晰度,现在我们只有这样的东西:
<my-directive></my-directive>
查看此代码,我不知道该指令需要执行什么,这与 AngularJS 引入的"声明式 html"的优势背道而驰。
有人对这个问题感兴趣吗?
如果没有隔离的作用域,就很难有一个清晰的指令 API。因此,我不完全同意"我在 AngularJS 社区中阅读了一些最佳实践,指出我们应该尽可能避免使用隔离范围,因为它会增加应用程序的观察者和无用的绑定"
如果你想要明确的依赖关系,你必须选择隔离的范围。有一些方法可以减少监视和绑定的数量。在这种情况下,以下网址上的内容可能会有所帮助。@ http://csharperimage.jeremylikness.com/2014/11/the-top-5-mistakes-angularjs-developers.html
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不影响其他元素的情况下扩展DIV
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 在不移动内部文本的情况下缩放元素的效果
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 默认情况下折叠和展开嵌套列表
- 如何在不单击javascript中的按钮的情况下触发事件
- 如何使 AngularJS 指令在不隔离作用域的情况下清楚地定义其依赖关系