2016-04-08 62 views
1

我在做一个纸牌游戏。球员轮流。玩家不能扔任何卡,但受到前一张牌的限制。如果以前的球员投掷7个球杆,当前球员只能投掷球杆。 (比这更复杂,但是...)流星事件没有解雇

我解决了这个问题,有两个css类,cardRegular和cardThrowable,其中cardThrowable将卡移动到mousehover上,向用户表明卡可以被抛出。

我已经定义了这些事件:

Template.card.events({ 
    "click .cardThrowable": function() { 
     console.log("click .cardThrowable " + this); 
    }, 
    "click .cardRegular": function() { 
     console.log("click .cardRegular " + this); 
    } 
}); 

当我打开网页,这两个事件的工作在这两个浏览器就好了(两个人),但是,一旦一个球员投掷他的卡我有一个问题。

第二名玩家牌正确更新并且只允许牌拥有cardThrowable类,但都不会触发事件。

如果我只是刷新页面,然后事件被正确解雇,但其他用户有同样的问题。直到他刷新页面...

我完全失去了什么可能导致此错误。

编辑: 卡模板

<template name="cards"> 
    <div class="cardsDIV"> 
     {{#each playerCards}} 
      {{> card}} 
     {{/each}} 
    </div> 
</template> 

<template name="card"> 
    {{{card this}}} 
</template> 

...

Template.card.helpers({ 
    card: function() { 
     return '<img src="' + cardImage(this.cardName) + 
      '" style="position:absolute;bottom:0;left:' + this.left + 'px" class="' + this.css + '" />'; 
    } 
}); 
+0

这可能可以通过把实际的卡元素在子模板和附加的事件,该模板解决。您将不得不向我展示一些模板,以确认这一点。 –

+0

可能与此问题类似的情况:http://stackoverflow.com/a/35412089/4699406 –

+0

您是使用发布和订阅吗? – StefanL19

回答

2

我觉得事件处理程序不附,因为这样你添加的卡。

我不太明白你是如何获得对CSS的价值观和离开,但我被你用它们的方式假定它们是卡原稿中值

尝试是这样的HTML:

<template name="card"> 
    <img class="{{this.css}} js-playCard" src="{{this.cardName}}" style="position:absolute;bottom:0;left:{{this.left}}px" /> 
</template> 

而且这个JS:

Template.card.events({ 
    'click .js-playCard'(event, instance) { 
    console.log("clicked " + this.css); 
    } 
}); 
+0

我正在计算“左”和“css”值,因为这取决于用户排序和以前抛出的卡... –

+0

也许你可以尝试我现在​​没有这些建议的模式。只是为了看看这些事件是否真的发生了。 –

+0

它工作! :D真棒!谢谢! –