我有一个很大的 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) vm
至 this
,但这是一个不同的故事。 (可以阅读有关该样式偏好的信息 here 。)
关于javascript - 使用命名函数或将它们放在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002007/