2016-08-10 18 views
0

私はかなり簡単でしたplunker私の問題を表示する。問題は変数があり、この変数に初期アプリケーションの読み込みを設定したいのですが、私はこの目的のために角度サービスを行いましたが、何らかの理由で角度サービスがコントローラ内で起動しません。私のミスはどこですか?角度サービスは起動しません

app.controller('MainCtrl', function($scope, optService) { 

    $scope.priority = []; 

    var exeService = function() { 

    console.log('function fired') 
    // this is firing 
     optService.myOptions(function (result) { 

     console.log('service fired') 
    // this is not firing 
      angular.forEach(result, function(value) { 

       $scope.priority.push({value: value.name, label: value.name}); 

      }); 
     }); 
    } 
    exeService() 
    console.log($scope.priority) 
    // shows an empty array 
}); 

サービス

(function() { 

angular.module("app").factory("optService", ["$http", "$rootScope", "$q", "$log", 
    function ($http, $rootScope, $q, $log) { 

     var clearApi = "test.json"; 


     function myOptions() { 
      return $http.get(clearApi) 
       .then(function (response) { 
        console.log(response.data) 
        // shows an array 
        return response.data; 
       }); 
     } 

     return { 
      myOptions: myOptions 
     } 

     }]) 
}()); 
+0

関数 'myOptions'あなたのサービスで定義されているが引数はありませんが、なぜあなたはあなたのコントローラで 'optService.myOptions(function(result)'を呼び出すのですか? –

答えて

2

あなたはそのようなサービスの宣言実行する必要があります。

app.controller('MainCtrl', ['$scope', 'optService', function($scope, optService) { 

とコントローラで

optService.myOptions().then(function (result) { 

    console.log('service fired') 

     angular.forEach(result, function(value) { 

      $scope.priority.push({value: value.name, label: value.name}); 

     }); 
    }); 
+0

もちろん、私は引数を使用しないので、忘れてしまいました。ありがとう! – antonyboom

+0

私はそれに同意しますが、配列との宣言は必須ではありません – Silvinus

+0

もちろん、彼は彼のプロジェクトを細かくすると良いでしょう – DMCISSOKHO

関連する問題