如何在Backbone.js中刷新视图/模板
How to refresh a view/template in Backbone.js
我遇到了一个问题。我的CommentinfoModel
正在从服务器获取数据,我能够在视图中显示所有数据。我使用另一个PostwallModel
在同一视图中发布数据。
当我发布数据时,我会收到服务器的响应,但该数据不会出现在模板中。当我转到另一个页面并返回时,会显示新发布的数据。在我的帖子操作完成后,我该如何刷新。这是我的代码:
var myPostwallView = Backbone.View.extend({
el: $("#content"),
events: {
'click #postinwall': 'postmessage',
},
initialize: function () {
var that = this;
var options = {
query: uni_id + "/chaid/" + currentChallenge['id']
}
var onDataHandler = function (collection) {
that.render();
}
var onErrorHandler = function (collection) {
var errorstring = JSON.stringify(collection);
console.log(errorstring);
}
this.model = new CommentinfoModel(options);
this.model.fetch({
success: onDataHandler,
error: onErrorHandler,
dataType: "json"
});
},
render: function () {
$('.nav li').removeClass('active');
$('.nav li a[href="' + window.location.hash + '"]').parent().addClass('active');
var data = {
cinfo: this.model.toJSON(),
_: _
};
var compiledTemplate = _.template(PostwallTemplate, {
data: data
});
this.$el.html(compiledTemplate);
},
// Posting message action
postmessage: function (e) {
var optionsp = {
query: uni_id + "/chaid/" + currentChallenge['id']
}
var postmsg = $('#txt').val();
var obj = new PostwallModel(optionsp);
obj.save({
uid: uni_id,
chaid: currentChallenge['id'],
post: postmsg
}, {
success: function (obj, response) {
console.log(response.responseText, console.log(response);
alert(response.message));
}
});
e.preventDefault();
$('#txt').val("");
}
});
return myPostwallView;
当诸如GET或POST之类的主干操作完成时,模型将触发一个同步事件,您可以在视图中侦听该事件并调用渲染函数。该代码看起来像这样,可以放在视图初始化方法中:
this.listenTo(this.model, 'sync', this.render);
// Posting message action
postmessage: function (e) {
var optionsp = {
query: uni_id + "/chaid/" + currentChallenge['id']
}
var postmsg = $('#txt').val();
var obj = new PostwallModel(optionsp);
obj.save({
uid: uni_id,
chaid: currentChallenge['id'],
post: postmsg
}, {
success: function (obj, response) {
console.log(response.responseText, console.log(response);
alert(response.message),that.initialize());
}
});
e.preventDefault();
$('#txt').val("");
}
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- jQuery Mobile 在数据库查询后刷新列表视图
- 主干新视图反映旧模型数据
- 创建新视图时调用呈现函数
- 如何使用 javascript 同时刷新 mvc 视图和部分视图
- 在表单提交后,无法使用 mvc razor 中的 ajax 从其中的另一个分部视图刷新分部视图
- 离子替换新视图的选项卡和页脚
- 离子 / 如何期望刷新缓存视图
- YII:如何将参数列表从js传递到控制器,并通过传递另一个列表来调用新视图
- AngularJS-关闭tile并从ngRepeat指令AngularJS中的模型加载新视图
- 如何使用Kendo数据源中的新数据来刷新列表视图
- 如何在Jquery Mobile 1.4.5中刷新新的Div内容
- 更改值后刷新角度视图
- 美元AngularJs http.post不渲染新视图
- 实时刷新Rails视图
- Angular UI Router新视图,相同的URL
- Knockoutjs的日期时间字段更新不会刷新模型视图