角度js控制器中的函数声明样式

时间:2016-06-28 16:36:14

标签: angularjs

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(){
    };

}]);

1 个答案:

答案 0 :(得分:1)

是的,示例2在可维护性和可读性方面存在缺陷。如果您不打算在视图中使用该功能,请不要将其放在$ scope上。

在$ scope上暴露无关的函数最终会使您的代码更难以阅读和理解下一个人。维护应用程序的下一个人可能会问"为什么会这样?",他们甚至可能对它的使用做出错误的假设。在$ scope上公开一个函数会发出一条明确的消息,即该视图需要该函数。

如果您将不必要的功能从$ scope中删除,则很容易将它们识别为视图不必担心的内部或私有功能。这可以减少混乱。

如果您有时间,我建议您阅读由着名的John Papa撰写的角度应用广泛接受的编码风格指南。

https://github.com/johnpapa/angular-styleguide

旁注:

将事物分配给$ scope是一种旧的方式"做事。不幸的是,你会在网上找到很多使用$ scope的例子,因为在angularjs团队提出一种更简单,更易读的绑定方式之前,它已经存在了很长一段时间。有一种称为" controller-as"方法。它在上面的指南中有所介绍。