2017-03-17 6 views
0

範囲で工場/サービスのうち、javascript配列の値を取得する方法をだけ「.then」と、その値はnull内部の 『すべて』の機能を提供します件まで限定されている[チャット]配列のangularjs

angular.module('starter.services', []) 
    .factory('Chats', function($http) { 
    var chats=[]; 
     result = ""; 
    $http.get('http://localhost/Finalvts/AndroidData/GetDailySchedule.php') 
    .success(function(data, status, headers,config){ 
    console.log('data success'); 
    console.log(data); // for browser console 
    var i=0; 
    data.forEach(function (x) { 
    x['id']=i; 
    i++; 
    }) 
     chats = data; // for UI 
     console.log(chats); 

     }) 
    .error(function(data, status, headers,config){ 
     console.log('data error'); 
    }) 
     .then(function(result){ 
     chats = result.data; 
     console.log(chats); 
    }); 
     return { 
    all: function() { 
     console.log(chats); 
     return chats; 

    }, 
     remove: function(chat) { 
     chats.splice(chats.indexOf(chat), 1); 
    }, 
    }; 
}); 

アン配列のチャットはコンソールで変数 'data'によって返された値を表示しません...いくつかの提案をお願いします...ありがとう...

+0

可能性のある重複したような何か(http://stackoverflow.com/questions/35275451/how-to-use-http-promise-successcallback -response-outside-callback-in-angularjs) – georgeawg

答えて

0

httpリクエストからデータを取得する前にチャットを返します。これは、$http.getが非同期であり、データをフェッチするまでに一定の時間がかかるためです。これがデータを取得している間に、現在[]のチャットデータを返しています。 .then()にデータを返してください。 [angularJsでのコールバックの外側の使い方$ HTTP約束successCallback応答]のこの

angular.module('starter.services', []) 
    .factory('Chats', function($http) { 
     var chats = []; 
     result = ""; 
     $http.get('http://localhost/Finalvts/AndroidData/GetDailySchedule.php') 
      .success(function(data, status, headers, config) { 
       console.log('data success'); 
       console.log(data); // for browser console 
       var i = 0; 
       data.forEach(function(x) { 
        x['id'] = i; 
        i++; 
       }) 
       chats = data; // for UI 
       console.log(chats); 

      }) 
      .error(function(data, status, headers, config) { 
       console.log('data error'); 
      }) 
      .then(function(result) { 
       chats = result.data; 
       console.log(chats); 
       return { 
        all: function() { 
         console.log(chats); 
         return chats; 

        }, 
        remove: function(chat) { 
         chats.splice(chats.indexOf(chat), 1); 
        }, 
       }; 
      }); 

    }); 
+0

いいえ...動作していません...まだnullを返しています –

関連する問題