首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在html标记行中调用一个要求模块的方法

如何在html标记行中调用一个要求模块的方法
EN

Stack Overflow用户
提问于 2014-08-06 11:44:40
回答 1查看 60关注 0票数 0

我必须在html标记line.Also中调用require模块,它是deprecate.I,我认为当html标记动态生成时,它是必需的。

所需模块:

代码语言:javascript
复制
define('index',['jquery','common','stat'],function($,common,stat){
return{
    rankList:function(name){
        stat.ranklist(name,function(data){
            console.log('invoked...');

        });
    }
}

});

html标签行:

代码语言:javascript
复制
  <ul class="nav nav-tabs" id="myTab">
                <li class="active"><a href="#task" data-toggle="tab" onclick="rankListCall.rank('asCount')"><em><strong>任务量大咖</strong></em></a></li>
                <li><a href="#income" data-toggle="tab" onclick="rankListCall.rank('totalAmount')"><em><strong>收入大咖</strong></em></a></li>
                <li><a href="#right" data-toggle="tab" onclick="rankListCall.rank('accurateRate')"><em><strong>准确大咖</strong></em></a></li>
            </ul>

在html中加载脚本:

代码语言:javascript
复制
<script type='text/javascript'  src="http://cdn.staticfile.org/require-jquery/0.25.0/require-jquery.js"></script>

<script type='text/javascript' src="../../static/js/app.min.js"></script>

我在html中尝试的javascript:

代码语言:javascript
复制
<script type="text/javascript">
var rankListCall=(function(){
    var index=require(['index']);
    return{
        rank:function(name){
            index.rankList(name);
        }
   }
})();

我看到了脚本错误

index.rankList(name);

代码语言:javascript
复制
Uncaught TypeError: undefined is not a function 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 12:00:23

大多数需求模块不会将它们的对象导出到全局命名空间(jQuery是这方面的一个臭名昭著的例外,但让我们假设它不是)。因此,您应该尝试在require中处理您的函数和行为。无论导出和包含多少内容,DOM都无法“看到”您的函数,除非您将它们导出为(例如) window.rankList,但这就像挫败require的目的一样。

为了同时访问dom和stat函数,我会这样做。

代码语言:javascript
复制
define(['jquery','common','stat'],function(jQuery,common,stat){

    jQuery(document).on('click','.rankListCall',function() {
        var name=jQuery(this).data('name');
        stat.ranklist(name,function(data){
            console.log('invoked...',name,data);
        });
    });
});

和yout html代码

代码语言:javascript
复制
<ul class="nav nav-tabs" id="myTab">
    <li class="active"><a href="#task" data-toggle="tab" class="rankListCall" data-name="asCount"><em><strong>任务量大咖</strong></em></a></li>
    <li><a href="#income" data-toggle="tab" class="rankListCall" data-name="totalAmount"><em><strong>收入大咖</strong></em></a></li>
    <li><a href="#right" data-toggle="tab" class="rankListCall" data-name="accurateRate"><em><strong>准确大咖</strong></em></a></li>
</ul>

与其尝试将函数导出到全局命名空间,不如将逻辑与DOM保持分离。这样,您就可以同时处理require部分中的函数和行为。在本例中,我向元素中添加了一个类和一个数据属性,以允许jQuery在它们上委托事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25159564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档