角度作为全局变量和参数之间的差异?

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未知(可能?)".我真的不知道为什么前面提到的两个相同的代码工作方式不同.让我知道.

Buh*_*ica 3

包裹 . 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而不必担心语法。