2016-03-23 13 views
0

私のアプリに大きな問題があります。Ionic/Cordova/AngularJSのコントローラにサービスを渡すことができません

var Ambra = angular.module('Ambra', ['ionic', 'Ambra.controllers', 'Ambra.services', 'Ambra.controllersProdotti', 'ngCordova', 'pdf']) 

、通常私が作成したい:私はこれを持って

app.jsで
angular.module('Ambra').controller('DocumentController', ['$scope', '$ionicModal', 'InvoiceService', '$cordovaFile', '$cordovaFileOpener2', DocumentController]); 

function DocumentController($scope, $ionicModal, InvoiceService, $cordovaFile, $cordovaFileOpener2) { 
    var vm = this; 

:私は、PDFファイル作成を実装するためのチュートリアルに続いて、この私は、このようにコントローラを作成を行います

angular.module('Ambra.controllers', []) 

    .controller('home', function(currentUser, $scope, $state, $ionicViewService, $http, $ionicPopup) { 

そして、これは私が私の最初のコントローラに渡すことを試みることができますサービスです:

私はこれを使用するコントローラ10
angular.module('Ambra.services', []) 

    .factory('currentUser', function() { 

私のHTMLでは、ng-controller = "DocumentController as vm"の最初のコントローラを呼び出します。

これを私の最初のコントローラに渡す方法はわかりません。もし私がすべての私のコントローラに渡したいのであれば、私は自分の関数のパラメータにcurrentUserを追加します。どうやってやるの?

私の英語のために申し訳ありません!

+0

「ホーム」コントローラで「現在のユーザー」サービスを取得していないと言っていますか? – RamblinRose

+0

いいえ、家ではすべて正常に動作します。私はそれを最初に取得することはできません、DocumentController。他のすべてでうまくいく!私は関数のパラメータでそれを追加しようとしましたが、何もしません。 – Steph8

答えて

1

app.jsでAmbraモジュールを作成したら、Ambra.controller('myController', [])を使用して追加のコントローラを作成し、Ambra.factory('myFactory', [])を使用して同じモジュール内に追加のファクトリを作成することができます。

このようにコントローラを工場に渡します。任意のコントローラへの依存関係で

Ambra.controller('myController', ['myFactory', 
    function(myFactory){ 
     //Do stuff 
}]); 

あなたはそれを使用したい。

+0

ええ、私のエラーは、パラメータの順序でした。彼らは両方の宣言で同じことをしなければなりません! – Steph8

0

次ないとき、私はあなたが悪い「アンブラ」モジュールを再定義だと思います。

angular.module('Ambra').controller('DocumentController', ['$scope', '$ionicModal', 'InvoiceService', '$cordovaFile', '$cordovaFileOpener2', DocumentController]); 

function DocumentController($scope, $ionicModal, InvoiceService, $cordovaFile, $cordovaFileOpener2) { 
    var vm = this; 

私はまた、あなたがインジェクタでサービスを渡していない参照 - 私はあなたが意図的にその取り残さ推測しています。

Here's a fiddle that should guide youあなたのモジュールが幸せなので、もちろんコードの順番は重要です。

問題に集中するために、重要でない依存関係を整理しました。

angular.module('Ambra.controllers', []).controller('home', ['$scope', function($scope) { 

}]); 

angular.module('Ambra.services', []) 
    .factory('currentUser', function() { 
    return { name: "RamblinRose"} 
    }); 

var Ambra = angular.module('Ambra', ['Ambra.controllers','Ambra.services']) 

// BTW be consistent, compare how you're creating controllers 
// for 'Ambra.controllers' and this controller. 

Ambra.controller('DocumentController', ['$scope', 'currentUser', DocumentController]); 

function DocumentController($scope, currentUser) { 
    $scope.name = "DocumentController" 
    $scope.currentUser = currentUser; 
} 
関連する問題