2016-03-24 16 views
2

コントローラに含まれていないコントローラにangularJSサービスを呼び出す方法はありますか?コントローラに含まれていないコントローラにangularJSサービスを呼び出す方法は?

productCtrl.js

var app = angular.module('myApp',[]); 

app.controller('productCtrl',['$scope','productService', function ($scope,campaignService) 
    { 
     $scope.getLocations = function() { 
     productService.getPorduct(response,status); 
    } 
}]); 

productService.js

var app = angular.module("myApp", []); 

app.service('productService', ['ajaxService', function (ajaxService) { 

this.getPorduct = function (successFunction, errorFunction) { 

    ajaxService.AjaxGet("http:location.com/product#?clientid=10",  

successFunction, errorFunction); 

    }; 
}]); 

ajaxService.js

var app = angular.module("myApp", []); 

app.service('ajaxService', ['$http', 'blockUI', function ($http, blockUI) { 

this.AjaxGet = function (route, successFunction, errorFunction) { 
    blockUI.start(); 
    setTimeout(function() { 
     $http({ method: 'GET', url: route }).success(function (response, status, headers, config) { 
      blockUI.stop(); 
      successFunction(response, status); 
     }).error(function (response) { 
      blockUI.stop(); 
      errorFunction(response); 
     }); 
    }, 1000); 

} 

}]); 

私はURLからの結果を得るために、コントローラにアクセスし、私は次のエラー angular.js:13294 Error: [ng:areq] Argument 'productCtrl' is not a function, got undefined

+0

あなたはあなたのアプリを継続的に再定義しているからだと思います。あなたはvar app = angular.module( "myApp"、[]);を実行しています。 3つの異なる場所のように。 –

答えて

0

同じ名前の角度moduleを定義する必要がありますことを確認してくださいだけ拡張するため、そのモジュールを利用一旦アプリケーション&ごとに作成する必要があり取得していますそれへのコンポーネント。

ここで私はそれは一度だけ作成して、あなたは、このモジュールに

productService.js & ajaxService.jsをコンポーネントを追加したいangular.module("myApp")のように使用する必要がありますあなたが

var app = angular.module("myApp", []); 

のようなモジュールを作成した3ヶ所を見ることができますproductCtrl.jsでモジュールを最初に作成したモジュールを使用する必要があります(productCtrl.jsが最初に読み込まれたと仮定します)。あなたは

var app = angular.module("myApp", []); 

var app = angular.module("myApp"); 


からproductService.js & ajaxService.jsコードを変更する必要があるとしても、より良いそして、彼らはあるapp変数を使用しますが、後からロードされているjsの他のファイルからvar app = angular.module("myApp", []);この行を削除すでにmyAppモジュールがロードされています

+0

私は 'var app = angular.module(" myApp "、[])から変更しました。 'var app = angular.module( "myApp");「エラーが発生しています」angular.js:68 Uncaught Error:[$ injector:nomod]モジュール' myApp 'が利用できません!モジュール名のスペルが間違っているか、モジュール名を読み込めませんでした。モジュールを登録する場合は、依存関係を2番目の引数として指定してください。 ' – Sri

+0

@SriChatala HTMLファイルを追加して、ページ上のJSファイルをどのように参照しているかを確認できますか? –

+0

私はASP.Net MVCアプリケーションで使用しています。 – Sri

1

eモジュールを[]で一度だけ使用した後、モジュール名を使用します。 []とナットシェルで

// Creates the module 
var app = angular.module("myApp", []); 

// call the same module from your other files 
var app = angular.module("myApp"); // no [] 

See the documentation here.

[]ことなく、既存の/既に作成されたインスタンスを取得しながら、新しいインスタンスを作成します。最初の呼び出しで常に[]パラメーターが使用されるようにスクリプトが順序付けされていることを確認してください。

関連する問題