javascript - Delivering precompiled Handlebars Template on demand via JSON -
i want deliver handlebars templates ember.js application on demand via ajax-request. i'm able compile on server , i'm able deliver following output (function) string:
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! 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; }); this string i'm able received json object. now, want add precompiled template ember.templates object this:
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)); } but wraps whole 'stringified' function anonymous function(){} , no template. if unpack 'stringified' function eval, template undefined...
does know how function without wrap 'stringified' function? lot time in advance ;)
nevermind... forgot declare ajax request async: false rendering process wait template loaded.
also, changed function call eval( escapedtemplatestring ) eval( "(" + escapedtemplatestring + ")" )
--> everything's working great now
Comments
Post a Comment