首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在加载模板时获取异常。下划线/骨干线

在加载模板时获取异常。下划线/骨干线
EN

Stack Overflow用户
提问于 2012-10-19 13:46:07
回答 2查看 2.8K关注 0票数 3

我用文本获取Uncaught ReferenceError:Id不是定义的异常

代码语言:javascript
复制
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

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

代码语言:javascript
复制
<a class="thumbnail" href="#/products/<%= Id %>">
    <img alt="" src="/Content/img/<%= Thumbnail %>" />
    <h5><%= Title %></h5>
    <p><%= Price %></p>
    <p><%= Details %></p>
</a>

它的相应视图将render方法定义为:

代码语言:javascript
复制
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);
}
...

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

编辑

模型定义的缺省值如下:

代码语言:javascript
复制
defaults: {
    Id: '00000000-0000-0000-0000-000000000000',
    Price: 0.0,
    Category: 'empty',
    Title: 'untitled',
    Details: '',
    Thumbnail: ''
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-19 16:24:28

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

代码语言:javascript
复制
<%= Id %>

被编译成一个JavaScript函数,它是围绕以下内容的包装器:

代码语言:javascript
复制
with(obj || {}) {
    __p += '' + ((__t = Id) == null ? '' : __t ) + '';
}

打开控制台查看这个演示,您将看到。因此,您的模板函数将寻找一个Id作为局部变量或作为键在data对象中传递它。

您的问题是您的data是空的:

代码语言:javascript
复制
render: function() {
    var data = {}; // <------------------------------- Empty
    var compiledTemplate = _.template(productTemplate, data);
    this.$el.append(compiledTemplate);
}

我想你想说的是:

代码语言:javascript
复制
_.template(productTemplate, this.model.toJSON())

以便将模型的数据输入模板。

票数 6
EN

Stack Overflow用户

发布于 2012-10-19 13:47:06

正如正确的错误所述,您正在尝试访问一个未定义的变量。检查你模型的数据。如果您是从服务器获取数据,请确保实际的数据到主干(使用firebug或chrome dev工具)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12975643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档