我正在使用Backbone.js创建应用程序。但是它将代码渲染两次。就好像代码正在运行两次。我查找了重复的代码,找不到任何可以运行两次的东西。Backbone.js双重渲染问题
发生什么事的一个例子是在init中,主体内容应该被div#app_container标签包装。但是当我加载页面时,它会将其封装在div#app_container中,然后将其封装在dev#app_container标记中。另外,如果我在'initialize()'函数中放置alert('test'),它会发出两次“测试”警报。
这有道理吗?
- 编辑 -
与代码玩弄后,我发现,如果我删除其包裹在身体一切都行,那么问题将停止。所以wrapInner中有一些东西或影响正在导致代码运行两次的正文。
问题代码:
$("body").wrapInner('<div id="app_container" />');
这里是我的应用程序的JS文件中的代码:
(function ($) {
window.AppView = Backbone.View.extend({
self: this,
el: $("body"),
defaults: {
current_selected: "",
last_selected: "",
toggle: 0,
Messages: "",
latest_template: "",
},
events: {
"click #annotate_app_container" : "select"
},
initialize: function()
{
$("body").wrapInner('<div id="app_container" />');
$.get('/assets/includes/ajax.php', function(data){
$("#app_container").after(data);
});
},
select: function (e) {
e.preventDefault();
// Code goes here
},
});
window.App = new AppView;
})(jQuery);
是这个文件,我包括在页面上,如下所示:
<script type="text/javascript" src="/assets/js/json2.js"></script>
<script type="text/javascript" src="/assets/js/jquery.min.js"></script>
<script type="text/javascript" src="/assets/js/underscore.js"></script>
<script type="text/javascript" src="/assets/js/backbone.js"></script>
<script type="text/javascript" src="/assets/js/mustache.js"></script>
<script type="text/javascript" src="/assets/js/app.js"></script>
让我知道你的想法是什么。