angular.js。
的新手对于在应用程序控制器中声明的每个函数使用$scope
是否有任何缺点,尽管我们不打算在视图中使用它们?在下面的例子中是否存在遵循“示例2”编码风格的任何缺点或优点?
在两个示例中,我们打算仅在视图中显示someFunc1
示例1
var app = angular.module('def',[]);
app.controller('abcctrl' , []) {
$scope.function someFunc1(){
someFunc2();
}
function someFunc2(){
}
}]);
示例2
var app = angular.module('def',[]);
app.controller('abcctrl' , []) {
$scope.someFuc1 = function(){
$scope.someFunc2();
};
$scope.someFuc2 = function(){
};
}]);
答案 0 :(得分:1)
是的,示例2在可维护性和可读性方面存在缺陷。如果您不打算在视图中使用该功能,请不要将其放在$ scope上。
在$ scope上暴露无关的函数最终会使您的代码更难以阅读和理解下一个人。维护应用程序的下一个人可能会问"为什么会这样?",他们甚至可能对它的使用做出错误的假设。在$ scope上公开一个函数会发出一条明确的消息,即该视图需要该函数。
如果您将不必要的功能从$ scope中删除,则很容易将它们识别为视图不必担心的内部或私有功能。这可以减少混乱。
如果您有时间,我建议您阅读由着名的John Papa撰写的角度应用广泛接受的编码风格指南。
https://github.com/johnpapa/angular-styleguide
旁注:
将事物分配给$ scope是一种旧的方式"做事。不幸的是,你会在网上找到很多使用$ scope的例子,因为在angularjs团队提出一种更简单,更易读的绑定方式之前,它已经存在了很长一段时间。有一种称为" controller-as"方法。它在上面的指南中有所介绍。