我对发布到我的服务器时实现双向数据绑定的方式感到有些困惑。
我这样定义了我的资源:
angular.module('todoServices', ['ngResource']).
factory('Todo', function($resource){
return $resource('api/v1-0/todos/:todoId', {}, {
query: {method: 'GET', params:{todoId:''}, isArray: true},
save: {method: 'POST', isArray: true}
});
})
我将Todo资源作为依赖项传递给我的控制器。
然后在我的控制器中,我有一个方法可以将新的Todo项目添加到我的列表中:
$scope.addTodo = function() {
var savedModel = new Todo();
savedModel.title = $scope.title;
savedModel.description = $scope.description,
//...
savedModel.$save();
$scope.todos.push(savedModel);
}
只要我的待办事项出现在列表中,对服务器的调用工作并且该项目已添加到我的数据库中,这是有效的。 但是,因为当我将它推送到我的列表时,它还没有ID。 ID由我的MySQL数据库中的自动增量ID生成。 我的服务器以JSON格式返回对象,所以我假设,我必须指定某种回调函数来使数据绑定工作? 我到底需要做什么,所以在我的服务器返回数据后,我添加的待办事项会使用正确的ID更新?
答案 0 :(得分:4)
只需将返回的对象分配给 savedModel 对象即可。由于对资源的调用是异步的并且返回一个promise,因此你应该以这种方式使用success函数:
savedModel.$save(
function success(savedModel) {
$scope.todos.push(savedModel);
});
顺便说一下,检查 save 方法的 isArray 属性,通常应该 false 。