Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 我想我没有使用主干JS';他的观点正确吗?_Javascript_Html_View_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 我想我没有使用主干JS';他的观点正确吗?

Javascript 我想我没有使用主干JS';他的观点正确吗?,javascript,html,view,backbone.js,underscore.js,Javascript,Html,View,Backbone.js,Underscore.js,我刚刚开始使用主干(和下划线)JS。我们正在开发一款大型iPad HTML5应用程序,它需要在所有客户端工作。该项目需要结构和骨干似乎是一个很好的适合。似乎没有太多的阻碍,可以作为一个工具包使用(特别是因为也需要下划线) 不过我有一个问题。这个HTML5应用程序基本上是一个单页应用程序。一切都从index.html文件开始。我已经了解了主干网管理URL片段的方法,我非常喜欢这种方法。设置将事件路由到特定模型很容易 我正在开发的这个HTML5应用程序中有许多嵌套的“页面”层。筑巢有三个层次。这就是

我刚刚开始使用主干(和下划线)JS。我们正在开发一款大型iPad HTML5应用程序,它需要在所有客户端工作。该项目需要结构和骨干似乎是一个很好的适合。似乎没有太多的阻碍,可以作为一个工具包使用(特别是因为也需要下划线)

不过我有一个问题。这个HTML5应用程序基本上是一个单页应用程序。一切都从index.html文件开始。我已经了解了主干网管理URL片段的方法,我非常喜欢这种方法。设置将事件路由到特定模型很容易

我正在开发的这个HTML5应用程序中有许多嵌套的“页面”层。筑巢有三个层次。这就是这个应用程序使用的JSON数据(我还没有进入本地数据库存储等,但也许我应该?只是想先了解一下主干)。它们是普通网页,因此,它们只是已加载到webapp各个部分的内容页面

我一直在使用视图。我想我有这个概念。。。使用数据填充集合,视图将围绕此数据集合构建。我知道,对于模型的单个实例,它有一个视图。然后,当您想要查看模型的集合时,可以调用一个视图,该视图将在集合上进行迭代,并调用每个模型的视图

对不起,我知道我可能没什么道理

但基本上,我看到主干视图用于为单个模型生成HTML,为模型集合生成HTML。。。这就是为页面的各个部分排序的所有小视图,但是整个页面的视图呢?假设这个HTML5应用程序有一个基本的模板,但webapp的不同页面需要不同的整个页面布局,这样他们就可以看到他们应该怎么做?你能做这种事吗?基本上有一个视图可以通过Ajax调用来获取整个页面模板

下面的示例是当URL位于应用程序根目录时从主构造函数调用的视图。我想设置这样的各种视图,当用户处于各种URL时,我的应用程序需要显示这些视图。像我在这里这样加载整个Ajax模板是错误的吗?还有什么其他方法可以使单页应用程序,但也可以为站点的所有不同部分提供可管理的页面模板

App.View.Home = Backbone.View.extend({
    tagName: "article",
    id: "view-home",
    initialize: function() {
        _.bindAll(this, "render");
    },
    render: function() {

        var that = this;

        $.get("templates/home.html", function(templateHtml) {
            $(that.el).html(_.template(templateHtml));

            // we want tabs in this template too
            var tabs = new App.View.Tabs();
            $(that.el).find('#main').html(tabs.render().el);

        }, "html");

        return that;
    },
});

我很抱歉,如果这没有多大意义。。。我一直在努力学习很多东西。

我真的不认为这种方法有什么错,但如果没有看到更多的代码,就很难说了。重要的是不要想得太多。主干网的设计目的只有几件事,除此之外,您还可以根据自己的需要利用该功能


至于这个问题,我看不出你有什么理由不做你现在正在做的事情。我肯定会确保您在需要之前不会加载/获取任何数据或模板。我还要确保,在呈现视图之前,您要等待服务器提供所需的所有数据(这样视图就不会断断续续地加载)。最后几点只是指导方针,与主干线没有任何关系。但老实说,这是主干网的一个特点:它可以很好地完成一些事情,然后就不碍事了。

我认为最简单的方法是拥有许多视图和许多模板,视图是从控制器创建的,模板是从视图创建的

我们一直在使用jqote2进行模板制作,这很好,我们将所有模板提前缓存,并让数据驱动应用程序

每个视图都可以呈现给定div的标记

然后控制器可以创建多个视图,例如:-

App.Controllers.X = Backbone.Controller.extend({
   ....
   index: function() {
      new App.Views.View1({
         el: 'div#id1,
         ...
      });
      new App.Views.View2({
         el: 'div#id2,
         ...
      });
etc
   }

希望这有帮助

@andrew hare谢谢你。很好的回答。。。让我感到困惑的是,我正在开发我的单页应用程序,因此,本质上,它仍然像一个成熟的HTML网站一样工作。这不是完全重新创建,因为很多位是动态的。。。但在某些情况下,我需要为网站的不同部分提供几乎完整的页面模板。似乎我会将整个页面放入Ajax,然后将新的动态部分挂起?这样做似乎会导致这种“波涛汹涌”。我还是不知道该怎么做。。。Ajax页面模板(使我的代码井然有序)?