2016-04-01 7 views
1

を解決:必要とするサービスブレーク解決にサービスにアクセスしようとすると

angular 
    .module('app', ['ui.router', 'templates']) 
    .config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 
     .state('home', { 
     url: '/', 
     templateUrl: 'app/views/home.html', 
     controller: 'Home as home', 
     resolve: { 
      productIndex: function (ProductService) { 
debugger; 
      // return ProductService.getProductsIndex(); 
      } 
     } 
     }); 
    $urlRouterProvider.otherwise('/'); 
    }); 

上記のコードを実行すると、デバッガがヒットしたことがないと何も来なかっアップコンソールで。 ProductServiceがパラメータとして削除されると、デバッガはヒットしますが、明らかにサービスを呼び出すことはできません。可能であれば、私はサービスからhttpコールを行うことも好むでしょう。

私はしばらくの間見てきましたが、同様の注射の実際の例だけを見ています。以前の(作業中の)プロジェクトを振り返っても、私は上記のこととは何の違いも見られません。私の推測では、何かが間違っているかもしれないということです。どんな助けも素晴らしいだろう!完全を期すために

function ProductService($http) { 
    this.getProductsIndex = function() { 
    // debugger; 
    // return $http.get('/products'); 
    }; 

} 

angular 
    .module('app') 
    .controller('ProductService', ProductService); 
+1

サービスをコントローラとして登録しています。代わりにサービスとして登録する必要があります – rob

+0

本当にありがとうございました...少し恥ずかしい – Onyooo

+0

@robあなたは公式にお気軽にお答えしたいと思います。私はそれを受け入れるでしょう。それが解決策でした。 – Onyooo

答えて

1

を今、あなたのサービスをコントローラとして登録されています。代わりにサービスとして登録する必要があります。例えば

angular 
    .module('app') 
    .service('ProductService', ProductService); 
0

VARアプリ= angular.module( '*****')

app.service('ProductService', function() { 
     return { 
      getData: function($q, $http) { 
       var defer = $q.defer(); 
       $http.get('****').success(function(data) { 
        defer.resolve(data);    
       }); 
       return defer.promise; 
      } 
     }; 
    }); 

アボが

決意を解決しますは、サービスの文字列か、または注入される値を返す関数のいずれかをとります。

resolve: { 
    productIndex: function (ProductService) { 
    // your stuff goes here. 
    } 
} 

これは動作shouls .. :)

関連する問題