2012-12-23 33 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