javascript - 使用命名函数或将它们放在范围内

标签 javascript angularjs

我有一个很大的 Angular 指令代码库,我一直在声明这样的函数:

$scope.doFoo = function() { ... };

因为我认为 Angular 可以在需要时管理/发布功能(不太确定我在哪里读到的)。

无论如何,我的项目的贡献者告诉我他认为这不是真的。将函数声明为范围变量或仅将它们声明为像这样的普通函数之间有什么区别吗:

function doFoo() { ... };

我应该使用哪个?

最佳答案

使用前一种方法,很容易将作用域与 View 可能不需要的函数(例如 Controller 内的实用程序/辅助函数)混为一谈。我认为将顶部 View 使用的函数/变量列表分配给范围是合乎逻辑的。即:

$scope.doFoo = doFoo;

然后,在文件底部,您可以组织您的函数。即:

function doFoo() { ... ]

不做$scope.doFoo ,您将无法在模板中使用 doFoo(例如 <div ng-click="doFoo()">)。

这样,如果doFoo()需要使用一些辅助函数,你可以在 Controller 的某个地方声明它,而不是通过添加它来弄乱范围。

我更喜欢使用 controllerAs 语法,并绑定(bind) vmthis ,但这是一个不同的故事。 (可以阅读有关该样式偏好的信息 here 。)

关于javascript - 使用命名函数或将它们放在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002007/

相关文章:

javascript - 使用 JQuery OnClick 创建多个 HTML 元素

html - 单击外部时如何隐藏 uib-popover

angularjs - 在 ng-grid angularjs 中固定列

ruby-on-rails - 在 Rails 中使用 AngularJS 检索嵌套资源

javascript - 如何在 AngularJS 中提取和发送具有多个不同模型的数据

javascript - 我如何循环遍历 Javascript 对象数组,将对象分配为其中其他对象的子对象?树/层次结构

使用 Express 时未加载 Javascript(Angular)

javascript - $注入(inject)器:unpr angularjs when injecting a service in the controller

javascript - 从 iframe 获取文本并设置范围

javascript - JavaScript 示例中的全局与本地