如果你想保持你的文件找干净的,你可以按照约翰爸爸的风格指南: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 –