如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递



我正在使用reuqireJS,并且正在努力调用一个函数,该函数位于我需要的js文件中。我的主app.js"控制器"需要(plugin)app.js,它处理所有插件配置和插件相关功能。

这是来自app.js

define([], function(){
    var start = function() {
        require(['jquery', 'overrides', 'jqm', 'multiview', 'respond'],function() {
            // globals
            var 
            // PROBLEM attempt at an external plugin function object
            dataTablesExt = {},
            ...;
            // call for (plugin)app.js
            enhanceDataTables = 
                function( page, from ) {
                    var datatable = page.find('.table-wrapper table');                  
                    if ( datatable.length > 0 && datatable.jqmData('bound') != true ) {
                        datatable.not(':jqmData(bound="true")')
                            .each( function() {
                                var that = $(this),
                                tblstyle = that.jqmData("table-style");
                                that.jqmData('bound', true);
                                require(['services/datatables/app'], function (App) {
                                // this calls (plugin)app.js
                                App.render({style: tblstyle, table: that });
                                });
                            });
                        }
                }; 
        // PROBLEM - try to call function "Hello" inside datatables.app
       anotherFunc= 
                function( page, from ) {
                    dataTablesExt.sayHello("john");
                };

我想我的问题是如何设置全局变量dataTablesText,这样我就可以用要全局调用的函数"填充"它。以下是我在(plugin)app.js:中尝试的内容

define(['services/datatables/app', 'services/datatables/datatables.min'], function( app, datatables ) {
    function render(parameters) {
    ...
    // the function I want to call
    function helloName( name ){
        alert( name );
        };
    // I'm trying to add this function to the global "dataTablesExt"
    dataTablesExt.sayHello = helloName; 
    }

但是。。。不起作用。我总是得到:

  dataTablesExt.sayHello is not a function

问题:
有人能指出我做错了什么吗?如果这是不可能的,还有什么替代方案。

我想触发一个自定义事件,但我必须设置一个对象来传递事件,我不知道该怎么做

谢谢你的帮助!

明白了。我需要将dataTablesText附加到我正在使用的全局变量,而不是将其声明为变量。就像这样:

 // globals
        var 
        ...;
        $.dataTablesExt = {};

然后我可以为它分配函数并调用它们。

相关内容

  • 没有找到相关文章

最新更新