2013-05-12 2 views
1

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

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" 

Вместо inserte d text У меня есть какой-то хэш. Кстати, что это за хэш?

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

ответ

2

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

new_query.$get(function(result){ 
    console.log(result); 
}); 
Смежные вопросы