2016-07-07 30 views
0

我正在爲Ionic做一個應用程序。根據由我在$http.get not working at .factory取得了問題的答案,我寫了下面的代碼:顯示Ionic App的AngularJS數據的錯誤

services.js

angular.module('starter.services', []) 

.factory('Chats', function($http) { 
    // Might use a resource here that returns a JSON array 

    var factory = { 
    chats: null, 
    all: function() { return chats; }, 
    get: function(chatId) { 
     for (var i = 0; i < chats.length; i++) { 
     if (chats[i].id === parseInt(chatId)) { 
      return chats[i]; 
     } 
     } 
     return null; 
    } 
    }; 

    $http.get("http://lucassmuller.com/work/projetoblog/api.php?action=posts").then(function(data) { 
    factory.chats = data; 
    console.log('data ok'); 
    }); 

    return factory; 

}); 

controllers.js

angular.module('starter.controllers', []) 

.controller('DashCtrl', function($scope) {}) 

.controller('ChatsCtrl', function($scope, Chats) { 
    // With the new view caching in Ionic, Controllers are only called 
    // when they are recreated or on app start, instead of every page change. 
    // To listen for when this page is active (for example, to refresh data), 
    // listen for the $ionicView.enter event: 
    // 
    //$scope.$on('$ionicView.enter', function(e) { 
    //}); 

    $scope.chats = Chats.all(); 
}) 

.controller('ChatDetailCtrl', function($scope, $stateParams, Chats) { 
    $scope.chat = Chats.get($stateParams.chatId); 
}) 

.controller('AccountCtrl', function($scope) { 
    $scope.settings = { 
    enableFriends: true 
    }; 
}); 

但是當我運行它用數據做一個ng-repeat,顯示一個錯誤,說明沒有定義聊天。我該如何解決它?

+0

您可能需要將'starter.services'注入'starter.controllers'作爲依賴模塊。 – Iceman

+0

嘗試在controller.js文件中使用'angular.module('starter.controllers',['starter.services '])' – Iceman

+0

但是在app.js中它們已連接:'angular.module('starter',[''離子','ionic.service.core','starter.controllers','starter.services'])' –

回答

1

您對任何HTTP資源的請求將不會立即解決。它返回一個promise對象,這實際上是一個承諾,說嘿,我現在不知道結果,但不管成功與否,我都會給你一個結果。承諾對象是在控制器中使用其.then屬性解析,該屬性以兩個函數作爲參數onSuccessonFailure

就你而言,這是你如何做到的。

廠/服務

.factory('Chats', function($http) { 

    // returning a promise from the service 
    var chats = $http.get("http://lucassmuller.com/work/projetoblog/api.php?action=posts"); 

    var factory = { 
    chats: null, 
    all: function() { return chats; }, 
    get: function(chatId) { 
     for (var i = 0; i < chats.length; i++) { 
     if (chats[i].id === parseInt(chatId)) { 
      return chats[i]; 
     } 
     } 
     return null; 
    } 
    }; 

    return factory; 

}); 

控制器

.controller('ChatsCtrl', function($scope, Chats) { 
    // resolving the promise in the controller 
    Chats.all().then(function (res){ // onSuccess, called when response is successfully recieved 
    var chats = res.data 
    console.log(chats); 
    $scope.chats = chats; 
    }, function (err){ // onFailure, called when error response 
     console.log(err); 
    }); 
}) 

檢查角的文檔$http promises

相關問題