$resource.get
метод по умолчанию ожидает ответ JSON, чтобы быть объектом (при разобран). При вызове $resource.get()
результатом будет экземпляр ресурса $.
В вашем примере, вызов Member.get({id:1})
произведет экземпляр $ ресурса, который создается путем вызова new Member()
source, а затем populated source (когда XHR завершается) со свойствами анализируемого ответа JSON:
shallowClearAndCopy(data, value);
Сигнатура функция, с которой ваш Member
экземпляр заселен выглядят следующим образом:
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;
}
Бросив тело функции вы поймете, что функция не ожидает src
параметр должен быть чем угодно, кроме объекта (for (var key in src) { ...
). Таким образом, если вы предоставите его шпагатом "null"
результат будет:
{1: "n", 2: "u", 3: "l", ...}
ngResource построен для поддержки RESTfull API с JSON в качестве подразумеваемого формата передачи данных, поэтому вы не сможете использовать ответы, такие как "null"
или что-либо еще, что не является действительным JSON.
Если не указано иное.
Если вы не сделаете использование transformResponse
конвертировать "null"
что-то вроде {'null': true}
на лету:
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
почему эти хорошие невысказанный вопросы получить так мало внимания в эти дни? Btw @stewie ответил на вопрос о точке (y) – angabriel