3

シングル ページ アプリに AngularAMD + RequirsJS を使用していますが、app.js ファイルにサービスを挿入するときに問題が発生します。

ここにコード:

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) {

    });

});

run 関数で loginService にアクセスしたいのですが、「モジュール MyApp のインスタンス化に失敗しました」というエラー メッセージが表示され続けるためアクセスできません。

次のようにログインサービスファイルをロードしようとしました:

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

});

しかし、その後、アプリがログイン サービスで定義されていないという別のエラーが発生しました。

大変お世話になりました。

デビッド

4

2 に答える 2

0

「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

于 2015-03-23T12:00:04.330 に答える