Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js双重渲染问题_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript Backbone.js双重渲染问题

Javascript Backbone.js双重渲染问题,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在使用Backbone.js创建一个应用程序。但是,它会呈现代码两次。这就好像代码运行了两次。我一直在寻找重复的代码,但找不到任何可以运行两次的代码 例如,在init上,主体内容应该由div#app#容器标记包装。但当我加载页面时,它会包装在一个div#app#容器中,然后包装在一个dev#app#容器标记中 另外,如果我在“initialize()”函数中放入alert('test'),它会提醒“test”两次 这有意义吗 --编辑-- 在玩过代码之后,我发现如果我去掉了包裹身体中所有东西

我正在使用Backbone.js创建一个应用程序。但是,它会呈现代码两次。这就好像代码运行了两次。我一直在寻找重复的代码,但找不到任何可以运行两次的代码

例如,在init上,主体内容应该由div#app#容器标记包装。但当我加载页面时,它会包装在一个div#app#容器中,然后包装在一个dev#app#容器标记中

另外,如果我在“initialize()”函数中放入alert('test'),它会提醒“test”两次

这有意义吗

--编辑--

在玩过代码之后,我发现如果我去掉了包裹身体中所有东西的线条,那么问题就停止了。因此,wrapInner或影响主体的某些内容导致代码运行两次

问题代码:

$("body").wrapInner('<div id="app_container" />');
$(“body”).wrapInner(“”);
以下是我的应用程序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);
(函数($){
window.AppView=Backbone.View.extend({
赛尔夫:这个,
el:$(“正文”),
默认值:{
当前选定的_:“”,
上次选择的_:“”,
切换:0,
消息:“”,
最新的_模板:“”,
},
活动:{
单击“注释应用程序容器”:“选择”
},
初始化:函数()
{
$(“正文”)。wrapInner(“”);
$.get('/assets/includes/ajax.php',函数(数据){
$(“#应用程序容器”)。在(数据)之后;
});
},
选择:功能(e){
e、 预防默认值();
//代码在这里
},
});
window.App=新建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>


请告诉我您认为它是什么。

您可能会检查导致页面再次加载的任何哈希更改事件。我曾经有过一个类似的行为,它是由元素
引起的,该元素也绑定了一个事件。

这是因为您在文档中执行了一个ajax调用。它将触发第二个文档就绪事件。你可能想做一些类似的事情

setTimeout(function(){window.App = new AppView()}, 1);
可能不是问题,但我确信这与get电话有关