Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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/2/jquery/76.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 使用requireJs&;渲染前组合多个模板;BackboneJs_Javascript_Jquery_Backbone.js_Requirejs - Fatal编程技术网

Javascript 使用requireJs&;渲染前组合多个模板;BackboneJs

Javascript 使用requireJs&;渲染前组合多个模板;BackboneJs,javascript,jquery,backbone.js,requirejs,Javascript,Jquery,Backbone.js,Requirejs,我正在尝试使用requireJs和requiteJs文本插件在BackboneJs中实现每个视图多个模板的想法 这是我的视图代码-您可以看到我在witch的define()中成功地传递了两个模板 define(['Backbone', 'text!Templates/BlogIndex.html', 'text!Templates/Elements/Blog/List.html'], function(Backbone, Template, ElementList){ var BlogPost

我正在尝试使用requireJs和requiteJs文本插件在BackboneJs中实现每个视图多个模板的想法

这是我的视图代码-您可以看到我在witch的define()中成功地传递了两个模板

define(['Backbone', 'text!Templates/BlogIndex.html', 'text!Templates/Elements/Blog/List.html'], function(Backbone, Template, ElementList){

var BlogPostIndexView = Backbone.View.extend({

    initialize: function () {
        var $template = $(Template);

        $template.prepend(ElementList);

        this.template = _.template($template.html());

    },

    render: function (Template) {
        this.$el.html(this.template({posts : this.collection}));
        return this;
    },

    add: function() {

    }

});

return BlogPostIndexView;  });
您可以看到,我正在尝试将第二个模板合并到第一个模板的html中。这是可行的,但不幸的是,当我渲染时,我得到了这个

<div class="outer-wrapper">
<div id="blog-post-wrapper">
    <h1>texting views</h1>
</div>

<ul>
    <% _.each(posts, function(post){ %>
        <li><%= post.title %></li>
    <% }); %>
</ul>

短信视图

我缺少外层包装的结束标记,但假设它应该在结束“ul”标记之后,您的模板如下所示:

container.html

<div class="outer-wrapper">
    <div id="blog-post-wrapper">
        <h1>texting views</h1>
    </div>
</div>

顺便说一句:看看这个!text alternative

除了列表未计算之外,它的位置是确定的还是应该在“h1”之后?这与我在initialise中使用的逻辑相同。您能在initialise函数中打印$template.html()的输出吗?我想逻辑不一样。。在您的例子中,您将在$template.prepend(ElementList)之后获得包含在'ul'标记内的内容,并用双引号括起来;呼叫这就是为什么它没有被评估。在我的例子中,您是在添加评估列表..我刚刚使用了insead的小胡子
<ul>
    <% _.each(posts, function(post){ %>
        <li><%= post.title %></li>
    <% }); %>
</ul>
define([..."container.html", "list.html"...], function (...container, list...) { 
...
initialize: function () {
    // container:
    // no need to compile 'container' if there are no variables..

    // list:
    this.listTemplate = _.template(list);
}
...
render: function () {
    var $container = $(container);
    $container.append(this.listTemplate({...})); 
    this.$el.html($container);
}