0

我想通过-request按需将Handlebars模板交付给我的应用程序。我能够在服务器上对其进行编译,并且还能够提供类似以下输出 ( ) 的内容:Ember.jsAjaxfunctionString

Ember.TEMPLATES["authentication"] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {
this.compilerInfo = [2,'>= 1.0.0-rc.3'];
helpers = helpers || Ember.Handlebars.helpers; data = data || {};
  var buffer = '', stack1, hashTypes, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;


  data.buffer.push("<h1>Hooray! It works!</h1>\r\n");
  hashTypes = {};
  options = {hash:{},contexts:[depth0],types:["ID"],hashTypes:hashTypes,data:data};
  data.buffer.push(escapeExpression(((stack1 = helpers.outlet),stack1 ? stack1.call(depth0, "main", options) : helperMissing.call(depth0, "outlet", "main", options))));
  return buffer;

});

这正是String我能够从收到的JSON对象中得到的。现在,我想将这个预编译的模板添加到Ember.TEMPLATES对象中,如下所示:

if(typeof data.template === 'string' && data.template != '') {
                  var escapedTemplateString =
                      data.template.replace(/\\n/g, "\\n").replace(/\\r/g, "\\r").replace(/\\t/g, "\\t");

                  Ember.TEMPLATES[templateName] = Ember.Handlebars.template(new Function(escapedTemplateString));
                }

但这将整个“字符串化”函数包装到另一个函数中anonymous function(){},我没有得到模板。如果我用 解压缩“字符串化”函数eval,则模板为undefined...

有谁知道如何function从“字符串化”函数中获得一个没有任何包装的?非常感谢您提前抽出时间;)

4

1 回答 1

0

没关系...我忘记声明我的Ajax请求,async: false以便渲染过程等待加载模板。

另外,我将函数调用从更改eval( escapedTemplateString )eval( "(" + escapedTemplateString + ")" )

--> 现在一切正常

于 2013-05-02T12:30:10.753 回答