2016-05-31 5 views
0

まあ、私はJavaScriptが非同期であることを知っています。ですから、私のコードを以下のように書くと、コントローラで呼び出すと結果として[]が得られます。角の工場にAPIを実装する方法

しかし、私は他の何かをする前にプロセスを終了するためにhttpリクエストを取得します。または私のイオンアプリは故障するでしょう。だから私はこれをどのようにすることができますか?

var starter = angular.module('starter', ['ionic']); 

starter.factory('AllEvent', function($http) { 
    var allEvent = []; 
    $http.get('/api/event/new').success(function(data) { 
    var allEvent = { 
     all: function() { 
     return data; 
     }, 
     remove: function(Event) { 
     $data.splice(data.indexOf(Event), 1); 
     }, 
     get: function(_id) { 
     for (var i = 0; i < data.length; i++) { 
     if (data[i]._id === _id) { 
      return data[i]; 
     } 
     } 
     return null; 
     } 
    }; 
    }); 
    return allEvent; 
}); 

P.S.このコードはタブのテンプレートから変更されたコードです。

答えて

0

なぜ同じ変数を配列とオブジェクトとして使用しますか?

AllEvent.getNew().then(function(eventObj){ 
    eventObj.all(); 
}) 

は、この作品を願ってコントローラーで

var starter = angular.module('starter', ['ionic']); 

starter.factory('AllEvent', function($http) { 
    return { 
     getNew : function(){ 
      return $http.get('/api/event/new').success(function(data) { 
       return { 
        all: function() { 
         return data; 
        }, 
        remove: function(Event) { 
         $data.splice(data.indexOf(Event), 1); 
        }, 
        get: function(_id) { 
         for (var i = 0; i < data.length; i++) { 
          if (data[i]._id === _id) { 
           return data[i]; 
          } 
         } 
         return null; 
        } 
       }; 
      }); 
     } 
    } 
}); 

..

関連する問題