angular作为全局变量和参数的区别
Difference between angular as global variable and parameter?
我写了一个Angular工厂。我犯了一个严重的错误。我闲逛去修理它。最后,我解决了这个问题…没有原因。所以我需要清楚地描述下面的代码问题。
这是我的代码A:
angular
.module('BinD', ['ngSails'])
.factory('UserService', function ($sails) {
...
});
另一个B是:
(function (angular) {
'use strict';
angular
.module('BinD', ['ngSails'])
.factory('UserService', function ($sails) {
...
});
})(angular);
错误部分为:
(function (angular) {
'use strict';
angular
.module('BinD', ['ngSails'])
.controller('SignUpCtrl', function ($scope, $window, UserService) {
代码B运行良好。错误消息"UserServiceProvider是未知的(可能?)"。我真的不知道为什么前面提到的两个相同的代码工作方式不同。
函数中的factory
调用应该没有任何区别。我想你一定也做了不同的改动。
在第三个代码片段中,当您使用两个参数调用.module
时,您创建了一个新模块。这将覆盖你在"代码A"或"代码B"中创建的模块。
您没有重用相同的模块,而是创建了一个新模块。因此,你的UserService在新模块上不存在是有道理的。
最后一个代码片段应该只带一个参数调用.module('BinD')
。只要你想要使用的模块的名字。
angular
.module('BinD')
.controller('SignUpCtrl', function ($scope, $window, UserService) {
,
另一个选项是您只调用.module
一次,并保存它。
var app = angular.module('BinD', ['ngSails']);
然后您可以调用app.controller
或app.factory
,而不必担心语法。
在你的代码A或代码B在这两个部分,你已经创建了一个模块BinD
与ngSails
的依赖,然后你注册工厂与该模块,但是代码A将全局声明一个变量,如果你正在使用它&代码B将使用IIFE模式进行编码,这将使您的变量仅在声明的函数中可用。但这与你得到的错误无关。
在您的控制器内,您想要利用该工厂,但是当您创建controller
时,您不应该创建像angular.module('BinD', ['ngSails'])
这样的新模块,这将使用BinD
模块冲洗先前注册的工厂(或其他组件),并将创建名称为BinD
的新模块。这就是为什么在控制器内注入UserService
后会抛出$injector
错误,因为UserService
在该模块内不可用。
(function (angular) {
'use strict';
angular
.module('BinD') //<- utilizing already created module
.controller('SignUpCtrl', function ($scope, $window, UserService) {
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 全局变量和全局对象的属性之间有什么区别吗
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- JavaScript中的函数和对象之间没有区别吗?
- 两者之间有什么区别..函数中的参数和参数
- js 函数之间使用参数的区别
- Javascript私有变量和参数有什么区别
- 在Backbone.js中,通过在选项中传递模型来初始化视图和将模型对象作为参数传递有什么区别
- JavaScript承诺中错误处理参数和catch的区别
- 在Promise中,使用catch和它的第二个参数有什么区别?
- jQuery .on()数据参数与使用javascript bind()的区别
- 通过上下文提供对API的访问与通过参数提供对API的访问有什么区别?
- Array.prototype.slice.call(arguments)和Array的区别.应用(null,参数)
- angular作为全局变量和参数的区别
- 在javascript中,整数、字符串和数组作为函数参数传递时有什么区别