サーバー上のモデルに変更があったときに、SignalR と Knockout.js を使用してビューに動きを表示しています。
エンティティ用の非常に単純な ViewModel があります (これは、サーバー側で "移動" すると画面上を "移動" する小さな赤い四角形です):
function Entity(data) {
var self = this;
self.id = data.UID;
self.left = ko.observable(data.Left);
self.top = ko.observable(data.Top);
}
私の HTML のノックアウト テンプレートは次のとおりです (私の CSS クラス エンティティが絶対位置を割り当てることに注意してください)。
<!-- ko foreach: entities -->
<div data-bind="attr: { id: 'ent' + id }, style: { top: (top() + 'px'), left: (left() + 'px')}" class="entity">
</div>
<!-- /ko -->
したがって、サーバー上のモデル (この場合は Location プロパティ) が変更されると、SignalR の RPC 機能を使用して、個々のエンティティごとに関連する ViewModel を更新します。これは私の CSSleft
で期待どおりに機能top
し、ViewModel の変更に従って自動的に更新されますが、見栄えがよくスムーズに見えるようにしたいと考えています。
Knockout を使用して ViewModel にバインドされた jQuery アニメーションをオンラインおよび SO で検索しても、fadeIn/fadeOut 可視性アニメーションのみが実際に表示されますが、キャンバス全体で「動き」を本質的に表示したいのです。似たようなことをして成功した人はいますか?