javascript - 为什么 Angular 使用闭包来定义指令和其他核心语法?

标签 javascript angularjs

必须这样写有什么好处:

app.directive("drink", function () {
  return {
    scope: {
      flavor: "="
    },
    template: '<div>{{ flavor }}</div>'
  };
});

而不是:

app.directive("drink", {
    scope: {
      flavor: "="
    },
    template: '<div>{{ flavor }}</div>'
}};

这种语法在 Angular 中被广泛使用。这是什么原因?

编辑:来自 https://thinkster.io/egghead/isolate-scope-eq

最佳答案

对于第一个示例,angular 可以控制何时创建配置对象,因此可以选择合适的时间。它还允许以以下形式进行依赖注入(inject):

app.directive("drink", ['drinkStoreService', function (drinkStoreService) {
  return {
    scope: {
      flavor: "="
    },
    template: '<div>{{ flavor }}</div>',

    link: function () {
      // could use `drinkStoreService` here
    }
  };
}]);

虽然您的第二个示例没有上述任何功能。因此可用性要差得多。此外,由于对象文字将“当场创建/执行”,它甚至可能对程序流有害。

关于javascript - 为什么 Angular 使用闭包来定义指令和其他核心语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32734182/

相关文章:

Javascript打开新窗口地址栏仍然显示

javascript - 同时 Node 以状态 1 退出。这会停止 Teamcity,导致其认为测试失败

javascript - Dreamweaver 不断将外部 CSS 文件与本地服务器上的本地 CSS 一起拉取

css - 悬停下拉按钮时如何更改插入符号的颜色

angularjs - 如何使用动态数据刷新从 http 请求加载的 NG-Table

javascript - 没有模拟 $http 的 Angular Testing

javascript - Bootstrap-sass gem Javascript 不能在 Rails 4 中工作

javascript - 为什么要将子元素属性传递给父 <tr> 元素的 onClick 事件(React)?

javascript - Karma E2E 测试已找到,但已跳过并标记为失败

javascript - 无法交换两个数组的对象内的对象