javascript - 如何使 AngularJS 指令在不隔离范围的情况下明确定义其依赖项

标签 javascript angularjs angularjs-directive angularjs-scope directive

我在编写我的应用程序指令时使用隔离范围来明确定义其在父范围中的依赖项。所以我总是可以在我的 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 社区中阅读了一些最佳实践,指出我们应该尽可能避免使用 Isolated Scope,因为它会增加应用程序的观察者和无用的绑定(bind)。仅在编写可在应用程序中重用的组件时使用 Isolated Scope。

据我所知,我们有两种可能性:

  • 我们的指令不创建子作用域
  • 我们的指令创建一个子作用域,它是原型(prototype)继承父作用域

我们可以通过这种方式防止创建新的范围和不必要的绑定(bind),但是它会降低指令的 HTML 标记的可读性和清晰度,现在我们只有这样的东西:

<my-directive></my-directive>

看着这段代码,我不知道指令执行需要什么,这与 AngularJS 引入的“声明式 html”的优势背道而驰。

有人对这个问题感兴趣吗?

最佳答案

如果没有 Isolated scope,就很难有一个清晰的 Directive API。 因此,我并不完全同意“我在 AngularJS 社区中阅读了一些最佳实践,指出我们应该尽可能避免使用 Isolated Scope,因为它会增加应用程序的观察者和无用的绑定(bind) "

如果你想要明确的依赖关系,你必须选择独立的范围。 有一些方法可以减少 watch 和绑定(bind)的数量。 在这种情况下,以下 url 上的内容可能会有所帮助。 @ http://csharperimage.jeremylikness.com/2014/11/the-top-5-mistakes-angularjs-developers.html

关于javascript - 如何使 AngularJS 指令在不隔离范围的情况下明确定义其依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28148336/

相关文章:

javascript - 动态 HTML 的事件监听器不起作用

javascript - 优化Angular Js电商元素

javascript - 以编程方式从 API 数据创建 Gatsby 页面

angularjs - Angular 翻译(PascalPrecht)如何避免在翻译前加载文本标签

javascript - Angular 三级嵌套网址

php - 在 Yii 中,您可以用 JSON 而不是 HTML/XML 返回 HTTP 错误响应吗?

javascript - 将旧的 javascript 函数更新为 jquery 函数不工作的代码片段

javascript - Graphics Magick with Node - 创建裁剪缩略图而不降低图像质量

javascript - 如何固定箭头的位置不依赖于 Jquery 工具提示中的内容?

javascript - 如何从内部指令更改 Controller 的 $scope 属性?