2013-05-22 134 views
8

我在另一個模塊的一個模塊中調用工廠時遇到問題。我正在使用angular.js + require.js。 這裏是我的代碼 模塊1:如何從Angular.js中的其他模塊調用模塊工廠?

define(['angular', 'app/admin/app.admin', 'app/admin/account/services'], function (angular, app, services) { 
    app.controller('MainCtrl', ['$scope', 'providerService', function ($scope, providerService) { 
    $scope.showMe = false; 
    $scope.provider = providerService.Providers; 
    }]); 


    return app; 
}); 

模塊2

define(['angular', 'app/admin/config/index'], function (angular) { 
    'use strict'; 

    var service = angular.module('app.admin.account.services', []); 

    service.factory('providerService', ['app.admin.config', 
    function (config) { 
     var providers = [ 
     { name: 'google+', url: config.AUTH_URL + '/google' }, 
     { name: 'facebook', url: config.AUTH_URL + '/facebook' } 
     ]; 
     return { 
     Providers: providers 
     }; 
    } 
    ]); 

    return service; 
}); 

當我打電話providerService模塊2從模塊1.我得到一個錯誤說providerService是不存在的。有人能告訴我我在這裏做錯了什麼嗎?

乾杯

+2

應用程序模塊在哪裏定義?它不在這個代碼中。如果你還沒有,那麼你需要聲明'app.admin.account.services'和'app'的依賴關係 –

回答

16

這是完全正常使用RequireJS和AngularJS在一起,但是術語「模塊」有兩個之間的不同含義,是有點混亂,當涉及到的相關性。

在RequireJS中,「module」是封裝了一段代碼的典型Javascript文件。您可以使用RequireJS定義依賴關係,以便將其他模塊作爲依賴關係傳入/傳出,並確保正確的腳本加載順序。

在AngularJS中,術語「模塊」具體指AngularJS「模塊」,它是許多控制器/服務/指令等聲明的容器。

您使用RequireJS來定義腳本文件的順序和依賴關係。然後,您還需要告訴Angular您的模塊依賴於哪個「Angular模塊」,從本質上導入所有的控制器/服務/指令。

在「應用程序/管理/ app.admin」確保你在「app.admin.account.services」模塊中傳遞的第二個參數定義了你的AngularJS模塊的依賴性如

var app = angular.module('app.admin', ['app.admin.account.services']); 

那麼這將導入「app.admin.account.services」模塊到主模塊讓您providerService可供依賴注入。

相關問題