BaH*_*Han 5 javascript angularjs
我写了一个Angular工厂.对我来说有一个严重的错误.我徘徊修复它.最后,我清除了这个问题......没有理由.所以我需要清楚地描述下面的代码问题.
这是我的代码A:
angular
.module('BinD', ['ngSails'])
.factory('UserService', function ($sails) {
...
});
Run Code Online (Sandbox Code Playgroud)
另一个B是:
(function (angular) {
'use strict';
angular
.module('BinD', ['ngSails'])
.factory('UserService', function ($sails) {
...
});
})(angular);
Run Code Online (Sandbox Code Playgroud)
错误部分是:
(function (angular) {
'use strict';
angular
.module('BinD', ['ngSails'])
.controller('SignUpCtrl', function ($scope, $window, UserService) {
Run Code Online (Sandbox Code Playgroud)
代码B效果很好.代码一个错误消息"UserServiceProvider未知(可能?)".我真的不知道为什么前面提到的两个相同的代码工作方式不同.让我知道.
包裹 . factory调用函数应该没有任何区别。我想你也一定做出了不同的改变。
在第三个代码片段中,当您使用.module两个参数调用时,您将创建一个新模块。这将覆盖您在“代码 A”或“代码 B”中创建的模块。
您不是重复使用同一模块,而是创建一个新模块。因此,新模块上不存在您的 UserService 是有道理的。
您的最后一个代码片段应该.module('BinD')仅使用一个参数进行调用。只是您要使用的模块的名称。
angular
.module('BinD')
.controller('SignUpCtrl', function ($scope, $window, UserService) {
Run Code Online (Sandbox Code Playgroud)
另一种选择是您只调用.module一次,然后保存。
var app = angular.module('BinD', ['ngSails']);
Run Code Online (Sandbox Code Playgroud)
然后稍后您可以调用app.controllerorapp.factory而不必担心语法。