2016-06-28 58 views
0

angular.js的新功能。角度js控制器中的函数声明风格

虽然我们不打算在视图中使用$scope,但是在应用程序控制器中声明的每个函数都有使用$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

是,实施例2具有在问候可维护性缺点和可读性。如果你不打算在你的视图中使用这个函数,不要把它放在$ scope上。

在$ scope中暴露无关函数最终导致您的代码难以阅读和理解下一个人。维护应用的下一个人可能会问“为什么在这里?”,他们甚至可能会对其使用情况做出不正确的假设。在$ scope中暴露一个函数会发送一个清晰的消息,说明视图上需要该函数。

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

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

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

侧面说明:

分配的事情$范围是做事的 “老办法”。不幸的是,你会发现很多使用$ scope的例子,因为在angularjs团队想出一个更简单,更可读的方式来绑定事情之前已经有一段时间了。有一种称为“控制器为”的新方法。它包含在上面的指南中。