2012-05-06 80 views
2

我試圖通過流星來創建KineticJS對象的位置更新。通過流星更新KineticJS Canvas元素

看來,麻煩的是:

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

回答

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使用$組符號。