【问题标题】:Underscore.js doesn't substitutes valuesUnderscore.js 不替换值
【发布时间】:2015-11-29 18:38:48
【问题描述】:

让我们研究以下代码行:

terminalsListHtml += this.compiled(_.extend(this.terminals[i], {clazz: 'all'}, obj));

模板:

compiled: _.template($('#terminal-template').text()), 

下面的选择器

$('#terminal-template').text()

返回

"
    <li data-terminal-id="{{ id }}" class="{{ clazz2 }}">
        <label>
            <input type="radio" name="terminal" class="{{ clazz }}" data-terminal-id="{{ id }}"/>
            <a href="/admin/createCompany/getOriginalImage/{{imageId}}" title=""
               class="fancy_image small-picture"><img
                    src="/admin/createCompany/getMediumThumbnail/{{imageId}}"
                    alt=""/></a>

            <h3>{{ name }}
                <small>{{ place }}</small>
            </h3>
            <p>{{ description }}</p>

            <p class="count">Проходимость: <span>{{ count }}</span> чел./час</p>

            <p class="count">Стоимость: <span>{{ amount }}</span> руб./час</p>
        </label>
    </li>
"

以下代码行

_.extend(this.terminals[i], {clazz: 'all'}, obj)

返回

但执行后

terminalsListHtml += this.compiled(_.extend(this.terminals[i], {clazz: 'all'}, obj));

terminalsListHtml 等于

"
    <li data-terminal-id="{{ id }}" class="{{ clazz2 }}">
        <label>
            <input type="radio" name="terminal" class="{{ clazz }}" data-terminal-id="{{ id }}"/>
            <a href="/admin/createCompany/getOriginalImage/{{imageId}}" title=""
               class="fancy_image small-picture"><img
                    src="/admin/createCompany/getMediumThumbnail/{{imageId}}"
                    alt=""/></a>

            <h3>{{ name }}
                <small>{{ place }}</small>
            </h3>
            <p>{{ description }}</p>

            <p class="count">Проходимость: <span>{{ count }}</span> чел./час</p>

            <p class="count">Стоимость: <span>{{ amount }}</span> руб./час</p>
        </label>
    </li>
" 

我做错了什么?

【问题讨论】:

  • 如果您的评论中确实有 _.templateSettings,似乎可以正常工作 (jsfiddle.net/ambiguous/r94snakk)。在调用_.template 之前,您是否设置了_.templateSettings
  • @mu 太短你是对的 - 问题与 templateSettings 位置有关

标签: javascript jquery underscore.js template-engine


【解决方案1】:

Underscore.js 模板使用 EJS 样式的模板,而您使用不同的模板。您可以更改模板设置以适用于您的模板,如下所示:

_.templateSettings = {
  interpolate: /\{\{(.+?)\}\}/g
};

var template = _.template("Hello {{ name }}!");
template({name: "Mustache"});
=> "Hello Mustache!"

这是从documentation复制而来的。

【讨论】:

  • 我有以下代码
  • 但是不知道这个设置有没有用
猜你喜欢
  • 2015-01-17
  • 2012-02-11
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
相关资源
最近更新 更多