无法以角度更新对象

时间:2014-01-06 16:56:26

标签: javascript ruby-on-rails angularjs

现在,我可以通过json api创建对象并将它们保存到rails数据库。这是一个简单的待办事项列表应用程序,当我添加一个对象时,它进入输入字段上方的待办事项列表。我还能够查询索引视图中的所有对象并列出我的所有待办事项对象。

当我点击每个待办事项旁边的复选框时,它应该将它的:done属性更改为true,这样我们在点击“清除”按钮{{1}后不再显示它功能。

这是我的js代码

clearCompleted

正在发生的事情是,它不是在数据库中更新该对象,而是创建一个全新的待办事项,并为其赋予angular.module("Todo", ["ngResource"]) function TodoController($scope, $filter, $resource) { Todo = $resource("/todos.json", {id: "@id"}, {update: {method: 'PUT'}}) $scope.todos = Todo.query() $scope.getTotalTodos = function () { return $scope.todos.length; }; $scope.clearCompleted = function () { Todo.save({done:true}) $scope.todos = $filter("filter")($scope.todos, {done:false}); }; $scope.addTodo = function () { entry = Todo.save({title:$scope.newTodo.title, importance:$scope.newTodo.importance, description:$scope.newTodo.description, done:false}) $scope.todos.push(entry); $scope.newTodo.title = ''; $scope.newTodo.importance = ''; $scope.newTodo.description = ''; }; } 属性。这是有道理的,因为在:done => true函数中,我们看起来正在创建一个不更新现有对象的对象。

如何更新数据库中的记录?

1 个答案:

答案 0 :(得分:0)

您不应使用Todo.save({})来更新待办事项。正如你所说,它创建了一个新对象。

编写代码如下。

 Todo = $resource("/todos.json", {id: "@id"}, {'save': {method: 'PUT'}})
 $scope.todos = Todo.query();
    var todo =  todos[0];//A todo that should be updated
    todo.done = true;
    todo.$save();

Mabe你需要在你的保存网址中使用todo键的参数。

<强> using $resource