Angularjs, $resource: как получить вставленный объект?

Мне нужно получить вставленный объект сразу после вставки. Но это проблема с Angularjs $resource.

module.factory('SearchQueries', function($resource){         
  return $resource('/instances/searches/:_id', {_id: '@id'});
});

var new_search = new SearchQueries({query: query});

new_search.$save(function(new_query){
  console.log(new_query);
  console.log(new_query.id, new_query.query);                           
  console.log(new_query.$get()); // This is undefined                   
  $scope.searchQueries.push(new_query);
});                                                

Ответ сервера:

{"query": "inserted text", "id": 53}                                                   

new_query напечатано в консоли:

h {query: "f7b1b2214bda4aa29b7ef5029c918590", id: 53, $get: function, $save: function,     $query: function…}
$$hashKey: "01J"
id: 53
query: "inserted text"

new_query.id, new_query.query напечатано в консоли:

53 "f7b1b2214bda4aa29b7ef5029c918590"

Вместо вставленного текста у меня какой-то хеш. Кстати, что это за хэш?

В шаблоне бит миллисекунды new_query является хэшем, после того, как $get выполнено (успех), new_query вставляется текст. Как получить вставленный текст сразу после успешного выполнения $get?


person I159    schedule 12.05.2013    source источник


Ответы (1)


new_query — это экземпляр SearchQueries с ответом данных от сервера. Похоже, ваш сервер отвечает {query: "f7b1b2214bda4aa29b7ef5029c918590", id: 53}, это не создано Angular. Свойства $ и $$ взяты из прототипа SearchQueries. Если вы хотите распечатать результат из new_query.$get(), вы должны сделать это в функции обратного вызова:

new_query.$get(function(result){
  console.log(result);
});
person joakimbl    schedule 12.05.2013