我需要在插入完成后立即获取插入的对象。但这是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"
我没有插入文本,而是有某种哈希。顺便问一下,这是什么哈希?
在模板中有一点毫秒new_query
是一个哈希值,$get
完成后(成功)new_query
插入文本。 如何在$get
成功后直接插入文字?
答案 0 :(得分:2)
new_query
是一个SearchQueries
实例,其中包含来自服务器的数据响应。看起来您的服务器以{query: "f7b1b2214bda4aa29b7ef5029c918590", id: 53}
响应,这不是由Angular创建的。 $和$$属性来自SearchQueries
原型。如果要打印new_query.$get()
的结果,则应在回调函数中执行此操作:
new_query.$get(function(result){
console.log(result);
});