1

所以我有这段代码,它处理模型的更新

  // Edit todo.
  $scope.editTodo = function(todo) {
    var newTitle = prompt('Edit todo', todo.title);
    if (newTitle) {
      todo.title = newTitle;
      todo.$update();

      socket.emit('update_todo', todo);
    }
  }

'todo' 参数是从视图发送的。

然后我有这段代码,它监听“update_todo”事件,并更新其他活动套接字/客户端上的模型视图。

  socket.on('todoUpdated', function(data) {
    for (var i in $scope.todos) {
      if ($scope.todos[i]._id == data._id) {
        $scope.todos[i] = data;
      }
    }  
  });

但是,假设我刚刚在“client1”切换到“client2”中编辑了一个模型,并尝试编辑相同的模型,我收到以下错误:

  TypeError: Object #<Object> has no method '$update'

该怎么办?而且,是否有更智能/更好的方法来更新模型视图而不是执行 for 循环?非常感谢您的帮助:)

4

1 回答 1

0

我的解决方案:

  socket.on('todoUpdated', function(data) {
    var newStatus = data.completed;

    for (var i in $scope.todos) {
      if ($scope.todos[i]._id == data._id) {
        $scope.todos[i].completed = newStatus;
      }
    }
  });

任何人都有更好的方法来做到这一点,请告诉:)

于 2013-09-02T14:31:13.243 回答