模块化 JS:如何运行非全局函数

W. 是的

这是我的代码(简单):

<script type="text/javascript">

// Set Schedule 
(function() {
var schedule = {

    report: [], 
    template: $('#report_schedule').html(),

    init: function() {
        this.cacheDom();
        this.bindEvents();
        console.log("banana");
    }, 
    cacheDom: function() {
        this.$setScheduleBtn = $('#setScheduleBtn'); 
        this.$reportSchedule = $('#reportSchedule');
    }, 
    bindEvents: function(){
        console.log("potato");
        this.$setScheduleBtn.on('click', showReportScheduler.bind(this));
    }, 
    showReportScheduler: function(){
        this.$reportSchedule.toggle();
    },



    schedule.init();
};

})();
</script>

    <span class="btn" id="setScheduleBtn">Set Schedule</span>
    <div id="reportSchedule" name="reportSchedule" style="display: none;">

我正在运行它并且没有看到点击事件的结果。我尝试console.log("banana");在我的 init 函数中使用 a来确保这个脚本正在运行。我的浏览器控制台中没有香蕉。我不明白什么?

ps:这是我第一次自己尝试模块化js。

编辑:

谢谢提图斯的帮助。这是我的最终代码:

    <span class="btn" id="setScheduleBtn">Set Schedule</span>
    <div id="reportSchedule" name="reportSchedule" style="display: none;">
        ......  
    </div>

<script type="text/javascript">
/******************/
/** Set Schedule **/ 
/******************/
(function() {

    var schedule = {

        report: [], 
        template: $('#report_schedule').html(),

        // Init functions
        init: function() {
            this.cacheDom();
            this.bindEvents();
        }, 
        // Cache elements from DOM
        cacheDom: function() {
            this.$setScheduleBtn = $('#setScheduleBtn'); 
            this.$reportSchedule = $('#reportSchedule');
        }, 
        // Set events
        bindEvents: function() {
            this.$setScheduleBtn.on( 'click', this.showReportScheduler.bind(this) );
        }, 
        // Display on click
        showReportScheduler: function() {
            this.$reportSchedule.show("slow");
        }

    };
    schedule.init();

})();
</script>
提多

schedule.init();语句位于对象字面量内。您需要将其移到对象文字之外,但将其保留在函数内:

(function() {
    var schedule = { // object literal start
         ......
    };// object literal end

    schedule.init();

}/* function end */)();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js 模块化函数

来自分类Dev

模块化编程和函数原型

来自分类Dev

模块化 JS 中的类扩展

来自分类Dev

如何模块化Powershell脚本

来自分类Dev

如何构建模块化应用

来自分类Dev

如何模块化角度代码?

来自分类Dev

如何构建模块化应用

来自分类Dev

如何使Java应用模块化

来自分类Dev

如何保持python项目模块化?

来自分类Dev

如何为模块化C项目制作模块化Makefile?

来自分类Dev

模块化gulp / node.js,调用模块变量

来自分类Dev

如何在导出的函数中对导出模块化

来自分类Dev

如何在Node JS中模块化代码

来自分类Dev

如何使用Node.js Express模块化路由

来自分类Dev

如何管理Angular js依赖关系和模块化?

来自分类Dev

模块化 JS:如何传递变量和事件

来自分类Dev

套餐一非模块化的JavaFX应用程序

来自分类Dev

在Typescript中使用非模块化脚本

来自分类Dev

返回模块化的空函数有什么处理?

来自分类Dev

在R中的模块化函数内访问值

来自分类Dev

Matlab中的模块化乘法逆函数

来自分类Dev

模块化js模式中的Webfont Loader

来自分类Dev

更多模块化D3.js编码

来自分类Dev

Angular JS模块化方法控制器结构

来自分类Dev

JS模块化设计-上下文问题

来自分类Dev

在Node.js中的文件之间模块化功能

来自分类Dev

模块化js模式中的Webfont Loader

来自分类Dev

AngularJS-如何模块化指令和模板组合?

来自分类Dev

如何在Angular中模块化polyfill?