当服务器上的模型发生更改时,我正在使用 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 的 Knockout 模板如下(值得注意的是我的 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 在线搜索和 SO 绑定到 ViewModel 的 jQuery 动画只会真正出现 fadeIn / fadeOut 可见性动画,而我想基本上在画布上显示“运动”。有人在做类似的事情上取得过成功吗?