Javascript 在requireJS中使用动态名称时,require如何在所有require上返回相同的文件
有点迷路了 我有一个函数,可以检查页面上的模板触发器,当找到时,通过首先要求模板(使用Javascript 在requireJS中使用动态名称时,require如何在所有require上返回相同的文件,javascript,dynamic,requirejs,require,Javascript,Dynamic,Requirejs,Require,有点迷路了 我有一个函数,可以检查页面上的模板触发器,当找到时,通过首先要求模板(使用requireJS)然后构建模板来触发模板呈现 我的问题是,我总是请求第一个模板文件,尽管我这样做时: renderTemplateTrigger: function(){ var t = $('.template'), tl = t.length, i, dyn, el, config; if ( tl >
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
});
}
}
}
}
renderTemplateTrigger:function(){
变量t=$('.template'),
tl=t.长度,
我
戴恩,
埃尔,
配置;
如果(tl>0){
对于(i=0;i
所以当两次迭代中dyn.lib
等于listview
和controlgroup
时,我需要listview
和listview
,我不知道为什么
问题:为什么我似乎无法使用带有requireJS的动态模板名称加载不同的模板?请尝试以下操作:
...
dyn.f = function (lib_template) {
// stuff
};
require(['text!../tx/'+dyn.lib], dyn.f);
...
controlgroup
的内容并非偶然地与listview
的内容相同,因此您似乎只需要相同的模板两次?没有。我也检查了:-)问题在于require回调中的dyn.lib
始终是listview
,无论我在外部如何设置它。可能与需要异步调用有关?或者缓存?您可以检查dyn吗?-->require调用之外的console.log(JSON.stringify(dyn))是正确的,在回调中总是相同的(=错误,因为它应该包含相应小部件的配置信息)。我想我有一个想法。由于回调中的所有内容都是“过时的”(如果我有10个模板,它可能仍然会一直使用第一个模板dyn),我想我必须只在require调用中触发一个事件,让我知道文件已加载。。。试啊。看起来不错。给我一个圣诞节,让我好好想想,然后再试一次!谢谢好啊我终于明白了。我已经将我所有的模板收集到一个模板中,现在在回调中运行整个函数,这样就不再有异步问题了