gpt4 book ai didi

angularjs - 使用 RequireJS 进行 Angular 服务注入(inject)

转载 作者:行者123 更新时间:2023-12-02 23:26:00 25 4
gpt4 key购买 nike

我在单页应用程序中使用 AngularAMD + RequiresJS,但在 app.js 文件中注入(inject)服务时遇到了一些问题。

代码如下:

login_service.js

define(['app'], function(app) {
'use strict';

app.service('loginService', function($location, $state, Restangular) {

return {

login: function(data, scope) {},

logout: function() {},

isLogged: function() {}

}

});

});

app.js

define(['angularAMD', 'restangular', 'angular-ui-router'], function(angularAMD) {
'use strict';

var app = angular.module('MyApp', ['restangular', 'ui.router', 'loginService']);

app.run(function($rootScope, $state, $stateParams, $location, loginService) {

console.log(loginService)

/*
Error: [$injector:modulerr] Failed to instantiate module MyApp due to: [$injector:modulerr]
Failed to instantiate module loginService due to:
$injector:nomod] Module 'loginService' is not available! You either misspelled the module name or forgot to load it.
*/

});

app.config(function($stateProvider, $urlRouterProvider, $i18nextProvider, RestangularProvider) {

});

});

我想在运行函数中访问loginService,但无法访问,因为我不断收到“无法实例化模块MyApp”错误消息。

我尝试按如下方式加载登录服务文件:

define(['angularAMD', 'restangular', 'angular-ui-router', 'services/login_service'], function(angularAMD) {

});

但随后我遇到另一个错误,指出该应用程序在登录服务中未定义。

非常感谢您的帮助。

大卫

最佳答案

这是因为“loginService”不是一个模块,它是一个服务,您无法将“loginService”(服务)添加到模块中,您只能将模块添加到另一个模块中。你可以做一件事:-

 var app = angular.module('loginService',[]);
app.service('loginService', function($location, $state, Restangular) {

return {

login: function(data, scope) {},

logout: function() {},

isLogged: function() {}

}

});

PS:-我对此不确定:-P

关于angularjs - 使用 RequireJS 进行 Angular 服务注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com