現在、Meteor Wordplay の例を使用しています。私が行っているプロジェクトはhttps://github.com/ajcrites/meteor-wordplayにあります
私が追加したかった機能の 1 つは、重複する単語を表示せず、重複した単語を赤で強調表示する (アニメーション化する) ことでした。私はこれを介して機能させました
Meteor.call('score_word', word_id, function (error, result) {
if (result !== undefined) {
var bg = $("#word_" + result.id).css('background-color');
$("#word_" + result.id).css('background-color', 'red');
//Otherwise transition takes effect *before* BG color is applied
setTimeout(function () {
$("#word_" + result.id).css('transition', 'all 2s')
.css('background-color', bg);
}, 10);
}
});
サーバーは、重複した単語 ID がある場合はそれを返します。
これは問題なく動作しますが、単語が追加されるたびに> words
テンプレート全体が再描画されるように見えるという問題があります。進行中のアニメーションのために HTML が変更されたためだと思いましたが、代わりに CSS を使用してアニメーションを実行してみました。コンソールで確認できる単語を複製しなくても、テンプレート全体が再描画されます。
前に Meteor に関する質問を見つけました。答えは、他の抽象コレクションの代わりにMeteor Collectionを使用してテンプレートから返すことです。
Template.words.words = function () {
return Words.find({game_id: game() && game()._id,
player_id: this._id});
};
> words
テンプレート全体が毎回再描画されないようにするにはどうすればよいですか? テンプレートに新しい単語のみを追加する方法はありますか?> words
#1 への回答に関係なく、重複した単語の赤い BG をアニメーション化して、テンプレートが更新された場合でも完全にアニメーション化する方法はありますか?