我正在使用骨干和nodejs来处理单页webapp。
我有一个视图,里面有一个模型(博客文章)。当用户点击“喜欢”按钮时,视图将启动ajax将用户'id发送到服务器,让喜欢的数字+1。
它看起来像这样:
this.model.save({
likedBy: userModel.get('_id')
}, {
url: '/posts/' + this.model.get('_id') + '/like',
success: function() {
// do something
},
patch: true
});
我的问题是,当这段代码运行时。浏览器启动http请求以检索屏幕上的所有图像,并重新渲染它们。所以当用户点击之类的按钮后,屏幕会“震动”。
到处都没有发生这种情况,但是造成这种情况的原因是什么?如何阻止“摇晃”?
感谢任何进步。
答案 0 :(得分:0)
当你调用this.model.save()时,模型将更新服务器中的数据并调用视图的渲染功能。 render方法将创建一个新的DOM元素并替换旧的DOM元素,这就是导致闪烁的原因(它再次请求图像)。
我假设您有一个针对Like操作的API调用(如果不是最好有一个),那么您可以通过添加如下函数来对模型执行类似操作的AJAX调用:
addLike : function(data) {
Backbone.ajax({
url: '/api/like/'+ this.get('id'),
method: 'POST',
data: data,
success: options.success,
error: options.error
});
}