javascript - 下划线中的部分模板(就像在 Handlebars 中一样)?

标签 javascript underscore.js handlebars.js

我有一个像这样的 Backbone 模型

var PeopleModel = Backbone.Model.extend({
defaults: {              
    "people": [
          { "username": "alan", "firstName": "Alan", "lastName": "Johnson", "phone": "1111", "email": "alan@test.com" },
          { "username": "allison", firstName: "Allison", "lastName": "House", "phone": "2222", "email": "allison@test.com" },
          { "username": "ryan", "firstName": "Ryan", "lastName": "Carson", "phone": "3333", "email": "ryan@test.com" },
          { "username": "ed", "firstName": "Edward", "lastName": "Feild", "phone": "4444", "email": "ed@test.com" },
          { "username": "phil", "firstName": "Philip", "lastName": "Doom", "phone": "5555", "email": "phil@test.com" },
          { "username": "gerald", "firstName": "Gerald", "lastName": "Butler", "phone": "6666", "email": "gerald@test.com" }
    ],
    "company": {"name": "Random Corp."},
    "country": "England"
}

});

下面是我的模板

<script id="people-template" type="text/x-handlebars-template">
{{#each people}}
  {{> person}}
{{/each}}
</script>

<script id="person-partial" type="text/x-handlebars-template">
 <div class="person">
    <h2>{{fullName}} </h2>
    <div class="phone">{{phone}}</div>
   <div class="email"><a href="mailto:{{email}}">{{email}}</a></div>    
 </div>

这就是我使用 handlebars.js 实现 partial 的方式。

我的问题

1.我们有类似的东西吗,我的意思是 underscore.js 模板引擎的 partials incase?

2.如果可以,我们如何在underscore.js模板引擎中实现partial

最佳答案

不,Underscore 的模板中没有原生的部分支持。但是,您几乎可以在 <% ... %> 中放入任何您想要的 JavaScript。 ;特别是,你可以调用你自己的函数,这样你就可以毫不费力地添加一些局部的东西。你可以有这样的模板:

<script id="people-template" type="text/x-handlebars-template">
    <% _(people).each(function(person) { %>
      <%= partial('person', person) %>
    <% }) %>
</script>

然后添加一个partial功能window :

window.partial = function(which, data) {
    var tmpl = $('#' + which + '-partial').html();
    return _.template(tmpl)(data);
};

演示:http://jsfiddle.net/ambiguous/HDuj5/9/

它不如{{> ... }} 漂亮漂亮在 Handlebars 中,但 Underscore 的模板是 JavaScript 本身的一个非常薄的包装器,这在一定程度上限制了你。您可以使用 namespace 来避免将内容直接放在 window 中或者你可以使用 {variable: ...} option to _.template 和一个包装器来设置你的标准助手。

关于javascript - 下划线中的部分模板(就像在 Handlebars 中一样)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290988/

相关文章:

javascript - 如何绕过 Puppeteer 阻止系统

javascript - 在 Angular 闭包内引用服务属性/方法的最合适方法是什么?

javascript - v-for for 作为 props 传递的数组会引发错误

javascript - 在 Handlebars 助手中接受多个参数

javascript - 使用自定义助手预编译 Handlebars 模板

javascript - jquery .off然后恢复为on

javascript - 基于公共(public)id连接两个js对象数组的功能方式

javascript - underscorejs中_.each(list)为空时如何显示消息?

javascript - 检测 instanceof Underscore 模板

javascript - 每个顶层都嵌套在 Handlebars 中