Backbone.js 由grunt contrib jst编译时下划线jst tempates的正确模式-未定义错误

Backbone.js 由grunt contrib jst编译时下划线jst tempates的正确模式-未定义错误,backbone.js,underscore.js,underscore.js-templating,Backbone.js,Underscore.js,Underscore.js Templating,我已设法将我收到的错误消息缩小到一行 ReferenceError: property is not defined ((__t = ( property )) == null ? '' : __t) + 视图控制器如下所示(为简洁起见进行了简化) 编译后的文件如下所示 this["JST"] = this["JST"] || {}; this["JST"]["public/js/app/templates/desk-view-main.html"] = function(obj) { o

我已设法将我收到的错误消息缩小到一行

ReferenceError: property is not defined

((__t = ( property )) == null ? '' : __t) +
视图控制器如下所示(为简洁起见进行了简化)

编译后的文件如下所示

this["JST"] = this["JST"] || {};

this["JST"]["public/js/app/templates/desk-view-main.html"] = function(obj) {
obj || (obj = {});
var __t, __p = '', __e = _.escape;
with (obj) {
__p += '  <nav id="tweak"></nav>\n  <div class="desk">\n    <h3>Workspace:</h3>\n    <strong> ' +
((__t = ( property )) == null ? '' : __t) +
'</strong>\n\n    <h3>end Workspace:</h3>\n  </div>\n</div>\n';

}
return __p
};
this[“JST”]=this[“JST”]| |{};
这个[“JST”][“public/js/app/templates/desk view main.html”]=函数(obj){
obj | |(obj={});
变量t,p='',e=.escape;
带(obj){
__p+='\n\n工作区:\n'+
(((_t=(属性))==null?“”:_t)+
“\n\n结束工作区:\n\n\n”;
}
返回
};
从以下public/js/app/templates/desk-view-main.html

<div class="desk">
  <h3>Workspace:</h3>
  <span> <%= property %></span>
  <h3>end Workspace:</h3>
</div>

工作空间:
结束工作区:

到目前为止,我还无法找到正确的模式来使用带变量的编译模板(如果删除属性变量,效果很好)。

这是一个javascript对象。你是对的,但是,它有一个明显的打字错误。var dictionary={“key”:“value”}所以您调用的模板使用
属性
{“key”:“value”}
这样的对象,而不是
{property:'some value'}
?据我所知,属性周围的引号同样有效。因此window.obj={key:“some value”}和window.obj={“property”:“some value”}都是有效的javascript(尽管前者可能更清晰、更正确。经过测试,在传递到内联模板时,这两种方法似乎都起作用,设置JST['path/templ.js'似乎有问题这是通过下划线模板方法解析的。是的,但是
key
property
是不同的键。。。
<div class="desk">
  <h3>Workspace:</h3>
  <span> <%= property %></span>
  <h3>end Workspace:</h3>
</div>