观察不会触发

时间:2013-03-20 16:25:51

标签: meteor

我想使用新的观察功能,但它似乎不起作用。至少不适合我。

首先,这里首先是mrt --version

的结果
Meteorite version 0.4.6
Meteor version 0.5.9 (git checkout)

目标是创建一堆可拖动的元素,其位置反映在客户端之间。

这是我的疑问:

  var items = Items.find({});
  var handle = items.observe( {
     changed: function (newDocument, oldDocument) {
        if ( newDocument._id !== dragged ) {
           $( "#" + id ).style( "left", newDocument.left );
           $( "#" + id ).style( "top", newDocument.top );
        }
     }
  } );

我知道位置已更改,因为当我重新加载页面时,图像会同步。我尝试使用observe和observeChanged得到相同的结果。如果我在回调中设置了一个断点,它就永远不会被调用。

可能是因为我仍然有insecureautopublish吗?

谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

它似乎有助于删除insecureautopublish,但更重要的是,等待订阅准备就绪。

我最终使用Meteor.subscribe("name", function() {});语法,现在可以使用了。

这是完整的代码:

Meteor.subscribe("allItems", function() {
   var items = Items.find( {} );
   Session.set( "items", items.fetch() );

   handle = items.observe( {
      changed: function ( newDocument, oldDocument ) {
         if ( newDocument._id !== dragged ) {
            $( "#" + newDocument._id ).css( "left", newDocument.left );
            $( "#" + newDocument._id ).css( "top", newDocument.top );
         }
      }
   } );
});

希望有所帮助