【问题标题】:Loading two script blocks (using lab.js as a load manager)加载两个脚本块(使用 lab.js 作为加载管理器)
【发布时间】:2013-12-10 13:56:59
【问题描述】:

我正在尝试在不同的位置加载两个 lab.js 块,但如果我使用第一个块中加载的文件中的第二个块中的函数,它们将显示为未定义。

这是第一个块(从我的 MVC 项目中加载到标题模板中

<script>
$LAB
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/jquery-1.10.2.min.js").wait()
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>bootstrap/js/bootstrap.min.js").wait()
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>bootstrap/js/bootstrap-datepicker.js").wait()
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/underscore-min.js").wait()
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/underscore.date.min.js").wait()
.script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/backbone-min.js").wait(function(){
    $(document).ready(function(){
        alert("loaded");
    });
});
</script>

这是在内容模板中加载的第二个块

$LAB
.script("../scripts/jquery-1.10.2.min.js").wait(function(){
    $(document).ready(function(){

        $(".test-badges").each(function( index ) {
            $( this ).tooltip({
              'show':true,
              'placement': 'bottom',
              'title' : 'Marca esta casilla si consideras que tu compañer@ debe responder igual.'
            });

        });
    });
});

第二个块 (.tooltip) 中的函数未加载,因为它们是 jquery 的依赖项。 没有办法统一两个块,仅在一个块中加载到标题中(两个文件完全独立并且具有动态创建的内容,这也不是我想要实现的)

所以问题是......有没有办法告诉第二个块只在第一个块完全加载时才加载?

非常感谢!

【问题讨论】:

    标签: javascript jquery labjs dynamic-script-loading


    【解决方案1】:

    我认为问题在于您正在创建两个单独的 $LAB 链,并且可以通过存储对 $LAB 链的引用并将最后一次调用链接到最后来实现您想要的,如下所示:

    第一块:

    <script>
    var chain = $LAB
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/jquery-1.10.2.min.js").wait()
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>bootstrap/js/bootstrap.min.js").wait()
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>bootstrap/js/bootstrap-datepicker.js").wait()
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/underscore-min.js").wait()
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/underscore.date.min.js").wait()
    .script("<?php echo(GlobalConfig::$ROOT_URL); ?>scripts/libs/backbone-min.js")
    </script>
    

    第二块:

    chain.wait(function(){
        $(document).ready(function(){
    
            $(".test-badges").each(function( index ) {
                $( this ).tooltip({
                  'show':true,
                  'placement': 'bottom',
                  'title' : 'Marca esta casilla si consideras que tu compañer@ debe responder igual.'
                });
            });
        });
    });
    

    【讨论】:

    • 我试过了,它仍然给出语法错误。当然,错误来自 $lab 的双重声明,但它仍然不能那样工作。我现在正在使用一种解决方法,将 jquery 从加载链中定义出来,但这仍然不是一个好主意
    • 这很奇怪......你有一个 jsfiddle 例子可以玩吗?另外,我不想建议这个,但我必须检查一下:jquery UI 中不是 .tooltip 吗?你确定它正在加载吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多