2016-12-02 5 views
0

Ich verwende die Registerkarte Vorlage, mit einer Liste von Chats und Chats Detail. Ich habe die Daten in eine JSON-Datei geschrieben und füge sie so in meinen Code ein: $ http.get (""). Die Daten werden in der Liste der Chats angezeigt, funktionieren jedoch nicht auf der Detailseite. ich eine Menge Lösung getestet haben, aber ich bin immer noch einen Fehler bekommen ...Externe JSON-Datei - IONIC

ist hier mein Code:

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

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

return { 
getChats: function() { 
return $http.get("http://abcd/Chats.json").success(function(response){ 
chats=response; 
return chats; 
    }); 
}, 

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

CONTROLLER

.controller('ChatsCtrl', function($scope, Chats) { 
Chats.getChats().success(function(response){ 
$scope.chats =response; 
    }); 
    }) 

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

Mein Fehler ist: kann nicht Lese Eigenschaft von Chat undefined .. Irgendwelche Hilfe bitte?

+0

es gibt eine fehlende Information – Ladmerc

+0

Ja, ich denke auch, aber ich kann nicht von wo finden? – kimg

Antwort

0

Versuchen Sie chats als Var innerhalb Ihrer Fabrik zu definieren.

.factory('Chats', function($http) { 
    var chats; 
    ... 
+0

Danke. Nun, ich habe diesen Fehler: "Eigenschaft" Länge "von undefined kann nicht gelesen werden. Die Tab-Chat-Seite wird gut angezeigt, mit Daten + Foto, aber ich kann immer noch nicht auf die Detail-Seite zugreifen. – kimg

+0

Sind Sie sicher, dass 'chats' in' getChats() '** richtig eingestellt ist, bevor ** Sie anrufen? 'get()'? Fügen Sie einige Konsolenausgaben für weitere Informationen hinzu. Es macht übrigens keinen Sinn, eine Variable innerhalb einer Promise-Funktion zurückzugeben. –

+0

Sie meinen so? Ich sehe gut das Objekt und das Array in der Konsole. '.factory ('Chats', Funktion ($ http) { var chats; Rückgabe { getChats: function() { Rückgabe $ http.get (" http: //abcd/chats.json "). Erfolg (Funktion (Antwort) { Chats = Antwort; console.log (Chats); });} , get: function (chatId) { for (i = 0; i kimg