Javascript 定义角度控制器函数内部函数的最佳实践
在angular 1.X中,我们可以如下定义作用域函数,我们想知道在作用域中定义函数的最佳实践是什么。 请帮助我了解以下任何一种方法是否优于其他方法Javascript 定义角度控制器函数内部函数的最佳实践,javascript,angularjs,Javascript,Angularjs,在angular 1.X中,我们可以如下定义作用域函数,我们想知道在作用域中定义函数的最佳实践是什么。 请帮助我了解以下任何一种方法是否优于其他方法 // first approach angular.controller("MyController", function() { $scope.firstFun = function() { // do something here }; }); // second approach var firstFun = functio
// first approach
angular.controller("MyController", function() {
$scope.firstFun = function() {
// do something here
};
});
// second approach
var firstFun = function($scope) {
return function() {
//use scope here and declare logic also
};
};
angular.controller("MyController", function() {
$scope.firstFun = firstFun($scope);
});
我个人更喜欢第一种声明函数的方法。使用一种方法比使用另一种方法没有额外的好处。事实上,在第二种方法中,您需要额外编写几行代码。您可以使用任何您觉得更方便的方法。在我看来,有一种方法比您列出的两种方法更好,如下所示:
(function (angular) {
"use strict";
angular.module("YourModule")
.controller("MyController", MyController);
function MyController() {
var ctrl = this;
// All controller functions and variables bindings
// will be listed below, in alphabetic order
ctrl.firstFun = firstFun;
ctrl.myName = "name";
function firstFun() {
}
}
}(angular));
我不认为短代码就是写得好的代码。因此,如果我是你,我会尝试一下。你缺少控制器的$scope参数。回答最佳实践并不是本网站的真正目标;通常,最佳实践类型的问题是自以为是的,可以有多个有效答案。这个网站更专注于解决代码中的问题。也就是说,有一个由John Papa编写的angular风格指南。在控制器内部访问$scope是一种反模式,只能作为最后手段。我支持约翰·帕帕的《风格指南》的建议,但我要补充一点,它有点过时了。如果您正在Angular 1.5.x中编写新代码,您应该尽可能多地使用组件。通过第二种方法,开发人员可以在多个控制器中重用该函数。好的,这不是最好的模式,这不是角度的方式,它告诉我们要为此编写服务,但这是一个好处。