2

我正在尝试通过 Meteor 更新 KineticJS 对象的位置。

看来问题出在:

  Players.update({name: "Rect"}, {xpos: this.attrs.x})

这是流星文档所说的:

  // Find the document with id "123", and completely replace it.
  Users.update({_id: "123"}, {name: "Alice", friends: ["Bob"]});

我试图检查数据是否正在通过以下方式更新:

  console.log(Players.findOne({name: "Rect"}).xpos);

这是github:

https://github.com/randompast/randomtests/tree/master/meteorCanvasTest

4

1 回答 1

3

首先,总是使用 $set 来更新你的属性,以免你踩到名字之类的东西。由于您在后续更新中踩到了名称,因此没有要更新的名为“rect”的属性。Players.update({name: "Rect"}, {$set: {xpos: this.attrs.x}})

if (Meteor.is_client) {
  Players.find().observe({
    changed: function(new_doc, idx, old_doc) {
      if(MyTest.rect) {
        MyTest.rect.attrs.x = new_doc.xpos;
        MyTest.layer.draw();
      }
    }                      
  });  
  ....

    MyTest.rect.on("dragend", function() {
      Players.update({name: "Rect"}, {$set: {xpos: this.attrs.x}});
    });
  ....

}

只需插入该观察函数并确保您的 dragend 使用 $set 表示法。

于 2012-05-08T05:02:23.437 回答