$resource.get
Methode, die standardmäßig erwartet, dass die JSON-Antwort ein Objekt zu sein (wenn analysiert). Beim Aufruf von $resource.get()
wird das Ergebnis eine Instanz der Ressource $ sein.
In Ihrem Beispiel Member.get({id:1})
Aufruf wird eine $ Ressourceninstanz erzeugen, die durch den Aufruf new Member()
source und dann populated source (wenn XHR abgeschlossen ist) erstellt wird, mit den Eigenschaften der analysierten Antwort JSON:
shallowClearAndCopy(data, value);
Die Unterzeichnung der mit der Funktion Ihre Member
Instanz besiedelt ist wie folgt:
function shallowClearAndCopy(src, dst) {
dst = dst || {};
angular.forEach(dst, function(value, key){
delete dst[key];
});
for (var key in src) {
if (src.hasOwnProperty(key) && key.charAt(0) !== '$' && key.charAt(1) !== '$') {
dst[key] = src[key];
}
}
return dst;
}
die Funktion Körper Glancing Sie werden erkennen, dass die Funktion nichtnicht erwartetParameter ist nichts anderes als Objekt (for (var key in src) { ...
). Also, wenn Sie es mit einer Schnur "null"
das Ergebnis liefern wird:
{1: "n", 2: "u", 3: "l", ...}
ngResource gebaut wird eine restfull API mit JSON als implizitem Datenübertragungsformat zu unterstützen, daher werden Sie nicht in der Lage sein, zu verwenden, Antworten wie "null"
oder irgendetwas anderes, das kein gültiger JSON ist.
Es sei denn.
Solange Sie keinen Gebrauch von transformResponse
zu konvertieren "null"
zu so etwas wie {'null': true}
on the fly machen:
app.factory('Member', function($resource) {
var Member = $resource('member.txt', {}, {
get: {
method: 'GET',
isArray: false,
transformResponse: function(data, headersGetter){
if(data === 'null'){
return {null: true};
}
return angular.fromJson(data);
}
}
});
return Member;
});
$scope.member = Member.get({id: 1});
console.log($scope.member); // --> {null: true}
DEMO
warum diese guten ungefragt Fragen bekommen so wenig Aufmerksamkeit in diesen Tagen? Btw @stewie beantwortete die Frage zu dem Punkt (y) – angabriel