Backbone Marionette:视图中的参数未定义(数据已定义)

时间:2013-11-10 07:08:28

标签: collections requirejs underscore.js fetch marionette

我试图传递给我的模板的数据在得到下划线的template renderer时会被莫名其妙地忽略。

数据可用:

underscore.js in dev console just before fail

但是我在控制台中得到一个异常,即参数url未定义:

  

未捕获的ReferenceError:未定义url

如果我钻得更深,我会看到一些看起来很疯狂的javascript:

UnderscoreJS's Renderer on template

它在以下后立即失败:__p+='\n\t\t<a href="#'+(通知urllabel仍在定义中。)

1 个答案:

答案 0 :(得分:1)

通常在编译的模板中会有with(obj||{})。我没有看到你的一个,所以也许variable option正在某处使用:

  

默认情况下,模板会通过with语句将数据中的值放在本地范围内。但是,您可以使用变量设置指定单个变量名称。

例如,如果您:

var t = _.template('<%= x %>');

然后查看t.source,您会看到这样的函数(为清晰起见而格式化):

function(obj){
    //...
    with(obj||{}){
        //...
    }
    return __p;
}

但如果你说:

var t = _.template('<%= x %>', null, { variable: 'E' });

并查看t.source,您将看到相同的结构没有围绕函数内容的with块。

演示:http://jsfiddle.net/ambiguous/jrEub/

模板功能的结构表明您在某个地方{variable: 'E'},因此您的模板应该<% E.url %>,而不仅仅是<% url %>