2017-06-09 17 views
-1

私はJohn PapaのAngularアーキテクチャを実装しようとしていますが、動作させることができません。私は、継承がどのように機能するかについて基本的なものが不足しているように感じます。角度モジュールの継承で困惑しました

私は、フィーチャーモジュールfoo.module.jsからベースアプリケーションモジュールに存在するファクトリメソッド=、test.pingにアクセスしようとしています。私は関数を呼び出すしようとすると、私はコンソールにエラーが表示されます。 にReferenceError:「テストは」

//app.js 
(function() { 

angular.module("app", ['app.foo']) 
    .factory('test', [function() { 

     var service = { 
      ping: ping 
     }; 
     return service 
     function ping() { 
      alert('PING Service method called.'); 
     } 
    }]) 
})(); 

//foo.module.js 
(function() { 

angular.module('app.foo', []); 

})(); 

//foo.js 
(function() { 

angular 
    .module('app.foo') 
    .controller('Foo', Foo); 

Foo.$inject = []; 

function Foo() { 
    var vm = this; 
    alert('Foo loaded'); //the alert is working 

    vm.ping = function() { 
     alert('Ping button clicked.'); //the alert is working 
     test.ping(); //this throws console error 
    } 
} 
})(); 

//html 
<body data-ng-controller="Foo as fooCtrl"> 
    <button data-ng-click="fooCtrl.ping()">PING</button> 

答えて

2

定義されていないあなたは、依存性注入でtestサービスを追加するのを忘れ。

Foo.$inject = []; 

それだった

function Foo(test) { 
+1

Foo.$inject = ['test']; 

function Foo() { 

これに変更し、この!あなたが使いたい角度のある$サービスを追加するのと同じように意味があります。私はそれが何かシンプルであることを知っていた...すべての層で失われてしまったが、すべてが配線され、働いていれば価値があるだろう。 –

関連する問題