2012-12-23 32 views
0

类丢在这里所使用的所有相同的文件要求...如何需要返回时动态名称在requireJS的

我有检查模板函数触发一个页面上,当被首次发现触发模板化渲染需要模板(使用requireJS),然后构建模板。

我的问题是,我总是要求的第一个模板文件虽然当我这样做:

renderTemplateTrigger: function(){ 
    var t = $('.template'), 
     tl = t.length, 
     i, 
     dyn, 
     el, 
     config; 

    if (tl > 0){ 
     for (i = 0; i < tl; i+=1){ 
      el = t[i]; 
      // correct element here 
      console.log(el); 

      if (el.getAttribute("val") === null){ 
       el.setAttribute("val",true); 

       // get and parse configuration info 
       config = el.getAttribute("data-config"); 
       dyn = $.parseJSON(config); 
       // correct 
       console.log(dyn); 

       // load template WILL ALWAYS LOAD THE SAME FILE 
       require(['text!../tx/'+dyn.lib], 
        function (lib_template) { 
          // stuff 
       }); 
      } 
     } 
    } 
} 

所以当两个dyn.lib迭代等于listviewcontrolgroup我需要listviewlistview,没有想法为什么?

问题
为什么我似乎不能使用动态模板的名称与requireJS加载不同的模板?

+0

内容controlgroup'是不小心相同listview'的',所以它只是看起来像你需要相同的模板两次? – Confusion

+0

没有。我也检查过:-)无论我将它设置在外部,问题是require回调中的'dyn.lib'总是'listview'。可能与需要异步调用有关吗?或缓存? – frequent

+0

你可以检查dyn吗? - > console.log(JSON.stringify(dyn)) – asgoth

回答

1

尝试以下操作:`的

... 

dyn.f = function (lib_template) { 
    // stuff 
}; 
require(['text!../tx/'+dyn.lib], dyn.f); 

... 
+0

啊。看起来不错。给我一个圣诞节来思考,然后尝试!谢谢! – frequent

+0

好的。最后算出来了。我已将所有模板抽取到单个模板中,然后在回调中运行整个函数,因此不再存在异步问题 – frequent