【发布时间】:2014-07-26 16:52:11
【问题描述】:
我以前从未得到过这个,我只能假设它也找不到它正在尝试渲染的div 元素?这没有任何意义,因为当我 console.log 在事件触发之前和之后有问题的元素存在时,它存在,但是会抛出错误 ....
下面是一个主干视图——渲染一个 reactjs 组件,我们传入deleteEvent: this.handleDeleteEvent.bind(this),它允许我们连续单击删除,它将冒泡事件并遍历,本质上是重新调用集合并重新渲染组件。
但它是导致手头问题的React.renderComponent():
AisisWriter.Views.PostIndex = AisisWriter.Views.CoreView.extend({
writer_posts: new AisisWriter.Collections.Posts(),
handleDeleteEvent: function(id){
var toDelete = new AisisWriter.Models.Post();
toDelete.set({id: id});
toDelete.destroy().then(this.deleted(id), this.failedToDelete);
return false
},
deleted: function(id) {
var options = { reset: true };
this.writer_posts.fetch(options).then(this.postsRecieved.bind(this), this.serverError);
},
postsRecieved: function(collection, response, options) {
this.render(collection);
if ($('#flash-error').is(':visible')){
$('#flash-error').hide();
}
$('#flash-success').show();
},
serverError: function() {
if ($('#flash-success').is(':visible')){
$('#flash-success').hide();
}
$('#flash-error').show();
},
failedToDelete: function() {
if ($('#flash-success').is(':visible')){
$('#flash-success').hide();
}
$('#flash-error').show();
},
render: function(postsObject) {
element = this.getElement();
var totalPerPage = postsObject.total_pages.total;
var posts = postsObject.posts;
React.renderComponent(new PostTable({posts: posts, maxPages: totalPerPage, deleteEvent: this.handleDeleteEvent.bind(this)}), element);
}
});
第一次渲染 - 很好用。您会看到一个带有帖子的表格,然后单击删除它一直到 - 从模型中删除它,一直调用集合进行渲染。从那里它获取总页数、帖子,然后将它们传递给组件,在那个阶段我得到:
Uncaught TypeError: Cannot read property 'parentNode' of undefined
有人有什么想法吗?
【问题讨论】:
标签: javascript backbone.js reactjs