在使用内联括号表示时,是否有任何常用的约定如何格式化长依赖列表?浏览github和Angular JS Developer Guide后,我没有看到一致的方法。
我对个人认为最好的(对不起)不感兴趣,但是如果标准惯例或最佳做法定义在我无法找到的地方。
这是有效的,但它扩展到第212列。快速比较字符串和参数也很困难。
angular.module('donkey', []).controller('FooCtrl', ['$scope', '$http', 'someCoolService', 'anotherCoolService', 'somethingElse', function ($scope, $http, someCoolService, anotherCoolService, somethingElse) {
}]);
它仍然在第87栏,但很容易比较字符串和参数。
angular
.module('donkey', [])
.controller('FooCtrl', [
'$scope', '$http', 'someCoolService', 'anotherCoolService', 'somethingElse',
function ($scope, $http, someCoolService, anotherCoolService, somethingElse) {
}]);
我倾向于使用这个,因为它是水平紧凑的,并允许快速注释掉依赖项。但是,它看起来确实有点奇怪。
angular
.module('donkey', [])
.controller('FooCtrl', [
'$scope',
'$http',
'someCoolService',
'anotherCoolService',
'somethingElse',
function (
$scope,
$http,
someCoolService,
anotherCoolService,
somethingElse) {
}])
是否有一种方法可以满足JSLint的空格检查,并且还可以在Sublime Text 3中维护代码崩溃功能?
谢谢!
Angular JS contributor coding rules没有提及它。
This best practice guide推荐给Google,Crockford等。
答案 0 :(得分:5)
我不知道在Angular中注入依赖项的三个支持的方法之间存在一个公认的约定。
话虽这么说,我目前正在开发一个非常大的Angular项目,我们一直使用$inject
语法来定义我们的依赖项。 documentation似乎也朝着这个方向发展。
所以我的建议是这样的。
将所有依赖项定义为对象
var SomeService = function($rootScope, $http, $q){
this.$rootScope = $rootScope;
this.$http = $http;
this.$q = $q;
};
SomeService.$inject = ['$rootScope', '$http', '$q'];
myModule.service('someService', SomeService);
这样可以更容易推理您的代码,并允许您将服务,指令和控制器分离到不同的文件中。
除非是非常小的应用程序,否则我将不再使用匿名声明和所有依赖项的数组语法。