2014-09-05 59 views
1

我有一個工廠返回一個對象調用包含JSON作爲這樣的內部資源:

.factory('cardFactory', function ($q, $http) { 
    return { 
    getOtherStuff: function() { 
     var deferred = $q.defer(), 
     httpPromise = $http.get('/static/cards.json'); 

     httpPromise.then(function (response) { 
     deferred.resolve(response); 
     }, function (error) { 
     console.error(error); 
     }); 

     return deferred.promise; 
    } 
    }; 
}); 

在我的控制器我這樣稱呼它:

var cardSuccess = function(data, status, headers, config) { 
    $scope.cards = data.data; 
    }; 

    cardFactory.getOtherStuff() 
    .then(cardSuccess, cardError); 

在瀏覽器$ scope.cards中填充,但在設備上它不填充。

任何想法爲什麼?

回答

1

嗯..,不確定。

我在我的離子應用程序中以不同的方式工作,效果很好。

.factory('cardFactory', function ($http) { 
    var promise; 
     var cards = { 
     getOtherStuff: function() { 
      if (!promise) { 
      // $http returns a promise, which has a then function, which also returns a promise 
      promise = $http.get('/static/cards.json').then(function (response) { 
       // The then function here is an opportunity to modify the response 
       // The return value gets picked up by the then in the controller. 
       return response.data; 
      }); 
      } 
      return promise; // Return the promise to the controller 
     } 
     }; 
    return cards; 
}) 

然後,在控制器上,通過調用它:

$scope.getData = function() { 

    // Call the async method and then do stuff with what is returned inside our own then function 
    cardFactory.getOtherStuff().then(function(d) { 
    $scope.cards= d; 
    }); 
} 

$ scope.getData();

希望它有幫助。

[編輯:]它可能是$ http.get網址,是相對的嗎?您是否嘗試過使用絕對網址?

+0

因爲它在瀏覽器中工作,我認爲它不是一個URL概率,生病試試這個,讓你知道,謝謝! – 2014-09-05 13:55:21

+0

儘管很多「承諾」表明不幸的是它有同樣的問題。我認爲我們以不同的方式實施了基本相同的事情。仍然不確定問題是什麼。 – 2014-09-05 14:02:39

0

以 「$ scope.cards =數據」

var cardSuccess = function(data, status, headers, config) { 
    $scope.cards = data; 
}; 
+0

這些卡在瀏覽器中沒有問題,所以不是這個問題,無論我嘗試它的方式,不幸的是它不工作 – 2014-09-05 14:08:51

+1

哪個設備?檢查日誌在logcat(安卓) – nitin 2014-09-05 14:15:27

+0

即時通訊測試在iOS上,但我可以在Android上測試,isnt logcat的Java功能?我正在寫這個JavaScript,不知道我可以用它記錄錯誤 – 2014-09-05 14:17:54

0

嘗試刪除在URL中領先的斜槓$ HTTP替換$ scope.cards = data.data。嘗試使用'static/cards.json'而不是'/static/cards.json'

我實際上遇到了同樣的問題,並且這個問題已經解決了我的問題。希望能幫助到你!

相關問題