javascript - 加载模板时出现异常。下划线/ Backbone

标签 javascript jquery backbone.js requirejs underscore.js

我收到 Uncaught ReferenceError 文本:Id is not defined 异常

Uncaught ReferenceError: Id is not defined
(anonymous function)
y.templateunderscore-min.js:5
Backbone.View.extend.renderProductView.js:13
Backbone.View.extend.renderProductListView.js:15
Backbone.View.extend.initializeProductListView.js:4
g.Viewbackbone-min.js:34
dbackbone-min.js:38
appRouter.on.productsList.fetch.successAppRouter.js:18
f.extend.fetch.a.successbackbone-min.js:23
f.Callbacks.ojquery-1.7.2.min.js:2
f.Callbacks.p.fireWithjquery-1.7.2.min.js:2
wjquery-1.7.2.min.js:4
f.support.ajax.f.ajaxTransport.send.d

存储在外部文件中的模板如下所示:

<a class="thumbnail" href="#/products/<%= Id %>">
    <img alt="" src="/Content/img/<%= Thumbnail %>" />
    <h5><%= Title %></h5>
    <p><%= Price %></p>
    <p><%= Details %></p>
</a>

其对应的view定义render方法为:

define(['jquery', 'underscore', 'backbone', 'text!templates/product.html'], function ($, _, Backbone, productTemplate) {
var ProductView = 
...

render: function() {
    var data = {};
    var compiledTemplate = _.template(productTemplate, data);
    this.$el.append(compiledTemplate);
}
...

什么会导致抛出异常? 谢谢!

编辑

模型定义默认值,如:

defaults: {
    Id: '00000000-0000-0000-0000-000000000000',
    Price: 0.0,
    Category: 'empty',
    Title: 'untitled',
    Details: '',
    Thumbnail: ''
}

最佳答案

您需要为所有插值变量提供值。像这样的模板:

<%= Id %>

被编译成一个 JavaScript 函数,它是这样的包装器:

with(obj || {}) {
    __p += '' + ((__t = Id) == null ? '' : __t ) + '';
}

看看this demo打开你的控制台,你会看到。因此,您的模板函数将寻找 Id 作为局部变量或作为您传递给它的 data 对象中的键。

你的问题是你的data是空的:

render: function() {
    var data = {}; // <------------------------------- Empty
    var compiledTemplate = _.template(productTemplate, data);
    this.$el.append(compiledTemplate);
}

我想你想说的是:

_.template(productTemplate, this.model.toJSON())

为了将模型的数据放入模板。

关于javascript - 加载模板时出现异常。下划线/ Backbone ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975643/

相关文章:

php - 如何使用 jquery/javascript 每秒更新 PHP 当前时间戳

javascript - 相同的子任务在 Angular 甘特图中显示为里程碑

javascript - 如何在遍历对象时为 setTimeout 参数设置固定时间偏移

javascript - Vue 开发和生产构建看起来不同

javascript - 网站前端使用backbone,后端使用nodejs

javascript - Backbone.js : _. template()函数结构

jquery - Bootstrap 3 +backbonejs - 切换导航未打开

javascript - 在 WordPress 中使用 wp_enqueue_script() 之前我必须注册一个脚本吗

jquery - 选择所有相同类的元素并存储在字符串中

javascript - 有条件地启用禁用下拉列表和文本字段