具有保存值的$resource回调
$resource callback with saved value
我刚开始使用AngularJS,我喜欢它。
然而,我需要使用$resource将一个项目保存到我的数据库中,然后返回到数据库中包含新创建项目值的对象(尤其是数据库分配的ID)。
我发现了一些描述这一点的文章,但似乎没有一篇对我有用:(
我有一个非常简单的设置:
var app = angular.module("todoApp", ['ngResource', 'ngAnimate']);
app.factory("TodoFactory", function ($resource) {
return $resource('.../api/todo/:id', { id: '@id' }, { update: { method: 'PUT' }});
});
var todoController = app.controller("TodoController", function ($scope, TodoFactory) {
$scope.todos = [];
init();
function init() {
$scope.todos = TodoFactory.query();
}
$scope.addTodo = function () {
TodoFactory.save($scope.item, function () {
// Success
console.log($scope.item); // <--- HERE'S MY PROBLEM
$scope.todos.push($scope.item);
$scope.item = {};
},
function () {
// Error
});
};
但是,当我调用TodoFactory.save时,$scope.item不包含数据库中的Id属性,只包含它在调用save时的值。
如何使我的设置返回具有所有数据库生成值的更新对象?
如果有人能给我指明正确的方向,我将不胜感激:)
更新:我只是查看了提供的API的源代码-保存方法不会更新插入的对象。在我解决了这个"小"问题后,这位和平使者的榜样发挥了巨大的作用。
很抱歉给大家带来不便,但非常感谢您的回复!:)
TodoFactory
的save
方法不会更新$scope.item
,而是以保存的对象为参数调用回调函数,该函数包含新的id。
所以你必须更换
$scope.addTodo = function () {
TodoFactory.save($scope.item, function () {
// Success
console.log($scope.item); // <--- HERE'S MY PROBLEM
$scope.todos.push($scope.item);
$scope.item = {};
},
function () {
// Error
});
};
带有
$scope.addTodo = function () {
TodoFactory.save($scope.item, function (savedTodo) {
// Success
console.log(savedTodo);
$scope.todos.push(savedTodo);
$scope.item = {};
},
function () {
// Error
});
};
这种行为记录在ngResource中$资源
这应该可以解决问题。
$scope.addTodo = function () {
// ADD IN A VARIABLE FOR THE RESPONSE DATA AS THE PARAMETER TO YOUR SUCCESS CALLBACK FN
TodoFactory.save($scope.item, function (responseItem) {
// Success
console.dir(responseItem); // <--- AND THEN USE IT
$scope.todos.push(responseItem);
$scope.item = {};
},
function () {
// Error
});
};
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 具有保存值的$resource回调
- 在 $resource.query 回调函数中访问类变量时出现 es6 问题
- Angularjs-在$resource-delete方法的回调中更新$scope的问题(thinkster.io第三章
- AngularJS $resource成功和错误回调
- 如何从angularjs-rails-resource获取create()、update()上的确认或回调
- Angularjs的$resource类级回调,或者后处理
- Cordova + Angularjs -为什么从回调函数内部调用$resource(或$http)会返回404
- $resource回调(错误和成功)