2016-06-28 56 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團隊想出一個更簡單,更可讀的方式來綁定事情之前已經有一段時間了。有一種稱爲「控制器爲」的新方法。它包含在上面的指南中。