Javascript 主干视图获取两次
我正在编写一个简单的主干应用程序,使用JSON API插件与Wordpress接口。我可以使用一个集合在一个页面上显示当前的所有帖子,但是在获取单个帖子时遇到了问题。注意,这里使用的是ajax预过滤器Javascript 主干视图获取两次,javascript,backbone.js,Javascript,Backbone.js,我正在编写一个简单的主干应用程序,使用JSON API插件与Wordpress接口。我可以使用一个集合在一个页面上显示当前的所有帖子,但是在获取单个帖子时遇到了问题。注意,这里使用的是ajax预过滤器 var NewsItem = Backbone.Model.extend({ urlRoot: '/api/get_post/', parse: function(response){ return response.post; } }); 我的看法是:
var NewsItem = Backbone.Model.extend({
urlRoot: '/api/get_post/',
parse: function(response){
return response.post;
}
});
我的看法是:
var SingleNewsItemView = Backbone.View.extend({
tagName: "div",
id: "single-view",
initialize: function(data) {
this.render(data);
},
render: function(data) {
var that = this;
var singleNewsItem = new NewsItem();
singleNewsItem.fetch({
data: $.param({"id": data}),
success: function(returnitem) {
var template = _.template($('#single-news-item-template').html(), {newsitem: returnitem});
that.$el.html(template);
},
error: function(){
alert('error retrieving item');
}
});
}
});
正确的URL将被调用一次并显示在屏幕上。但是,之后很快就会调用相同的URL,id=undefined,这会导致在新闻项视图上过度写入错误数据
我已经在点击处理程序中放置了一个警报,由于鬼魂问题,它不会触发两次-这是fetch发生的事情,我无法理解 我猜您是在视图外部显式调用render,可能是在创建实例时,也可能是在初始化视图时自动调用。在render内部调用fetch很奇怪。您通常会调用render来响应提取。我应该提到我也在使用一个名为BackStack的库。我猜它在调用render函数,我也在initialize函数中调用它。非常感谢您的帮助-一切顺利!非常感谢:通常情况下,您会在初始化时执行提取并显示加载微调器,然后侦听“sync”,并设置如下标志。isReady=true并重新渲染实际视图