【问题标题】:Calling function from class从类调用函数
【发布时间】:2016-05-01 19:18:39
【问题描述】:

在我正在开发的混合移动应用程序中,我无法从外部类调用函数或方法。我已将代码简化为:

var hub_api = (function() {
    function send() {
        console.log('hub api called');
    };

    return {
        send: function() {
            send();
        }
    };
});

这样称呼:

(function() {

    function register_event_handlers() {
        $(document).on(" touchend", "#btntest", function(evt) {
            hub_api.send();
            alert('pressed test button');
        });
    }

    document.addEventListener("app.Ready", register_event_handlers, false);

})();

实际代码在另一个项目中运行良好。脚本都包含如下:

<script type="application/javascript" src="js/helpers/api.js"></script>
<script type="application/javascript" src="js/helpers/testclass.js"></script>

运行应用程序返回hub_api is not defined。我完全被难住了。任何帮助表示赞赏。

编辑:我发现当我将 hub_api 函数放在 app.js 中时,它可以按预期工作,但在包含在单独的 api.js 脚本中时仍然无法正常工作。脚本以正确的顺序调用。

【问题讨论】:

  • 从这些事件处理程序外部调用时是否有效?
  • 我不明白这个问题。 “事件处理程序”只是一个函数。

标签: javascript class oop mobile intel-xdk


【解决方案1】:

尝试在主function() 中定义hub_api,如下所示:

(function() {

    var hub_api = (function() {
        function send() {
            console.log('hub api called');
        };

        return {
            send: function() {
                send();
            }
        };
    })();

    function register_event_handlers() {
        $(document).on(" touchend", "#btntest", function(evt) {
            hub_api.send();
            alert('pressed test button');
        });
    }

    document.addEventListener("app.Ready", register_event_handlers, false);

})();

【讨论】:

  • 你的事件处理代码在一个独立的(function(){...})();中,所以外面的所有定义都不能在里面访问,所以你必须在里面定义它
  • 这是不正确的。 hub_api 在外壳外部但在同一个脚本文件中声明时可以正常工作。它也适用于不同的项目。它必须是脚本的加载方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2013-07-20
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多