发布到restful服务器时的Angular.js动态绑定

时间:2013-02-04 14:19:54

标签: rest post data-binding angularjs

我对发布到我的服务器时实现双向数据绑定的方式感到有些困惑。

我这样定义了我的资源:

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更新?

1 个答案:

答案 0 :(得分:4)

只需将返回的对象分配给 savedModel 对象即可。由于对资源的调用是异步的并且返回一个promise,因此你应该以这种方式使用success函数:

 savedModel.$save(
     function success(savedModel) {
         $scope.todos.push(savedModel);
     });

顺便说一下,检查 save 方法的 isArray 属性,通常应该 false