如果你想保持你的文件找乾淨的,你可以按照約翰爸爸的風格指南:https://github.com/johnpapa/angular-styleguide
這裏是我定你的問題,應用乾淨的方法吧:http://plnkr.co/edit/tYYvssVWUfvHyXE8ilD8?p=preview
angular.module('testApp', [])
.controller('ctrl', ctrl);
function ctrl($scope) {
/* -- Public Properties & Methods -- */
$scope.test = test;
/* -- Private Properties & Methods -- */
function test(value) {
console.log(value);
}
}
因爲我的代碼是在IIFE,你其實可以有一個的function test
任何地方內部的塊,而不是控制器功能裏面:
angular.module('testApp', [])
.controller('ctrl', ctrl);
function ctrl($scope) {
/* -- Public Properties & Methods -- */
$scope.test = test;
}
/* -- Private Properties & Methods -- */
function test(value) {
console.log(value);
}
http://plnkr.co/edit/VXbOuOvHaIhRFBVZD16p?p=preview
我剛做了一個按照第二種方式考慮這樣做。相當多的時候我們創建了我們希望綁定到DOM的變量:$scope.showOptions
。如果我們擁有控制器以外的功能,我們將無法訪問此$scope.showOptions
,因此您將難以進行詢問。通過函數參數請求變量/作用域,可以輕鬆解決此問題。或者創建一個小包裝函數,將派發出來(幾乎像雙派遣)。
$scope.test = function test() { testImpl($scope.showOptions); };
function testImpl(showOptions) {
console.log(showOptions);
}
這將讓你保持所有主繁重的控制器之外,但也引入了複雜性的一個新層,其中一個我知道我一定能做到沒有。
所以選擇是你的。
當設置爲myController的控制器使用,適用範圍被綁定到組件。此範圍中不存在'test'。因此,你最好把'function test(value){}'放到一個作用域變量上,比如說'$ scope.test'。 –
http://plnkr.co/edit/tYYvssVWUfvHyXE8ilD8?p=preview –