【问题标题】:Using main functions in another js in dojo在dojo的另一个js中使用main函数
【发布时间】:2014-02-20 10:10:12
【问题描述】:

我有一个由 JSF 和 dojo 创建的项目。 在我的 main.js 中,我有一个函数正在执行以下操作:

define(
    ["./util/Query", "dojo/domReady!" ],
    function(Query) {
        // ... some extra stuff here

        var queryFunctions = new Query(someVar);

        // some extra stuff ...
});

我还创建了一个名为 Query 的模块:

define(["dojo/_base/declare"],
    function(declare) {
        return declare(null, {
            _someVar: null,

            constructor: function(SomeVar) {
                this._someVar = SomeVar;
            },
            functionOne: function(xhr, status, args) {
                // some stuff here;
            }
        });
});

在我的 JSF 文件中,我有一个 ajax 标记来向 bean 函数发出 ajax 请求,然后更新一个 dom 对象:

<p:ajax update="someDOM"
    listener="#{myBean.changeHandler}"
    oncomplete="functionOne(xhr, status, args)" />

基本上我想使用我的 Query 模块中的 functionOne() 函数。我无法直接在 ajax 标记中访问 queryFunctions 变量。我该怎么做?

【问题讨论】:

    标签: javascript jsf-2 primefaces dojo scope


    【解决方案1】:

    通过 DOM 处理事件是一种限制。您可以全局范围 queryFunctions 以便您可以从 DOM 访问它,但是,全局变量被认为是 bad practice 并且您应该尽量少使用它们。在这种情况下,您可以考虑这样做(如果没有其他方法)。

    更好的方法是在 JavaScript 中处理您的 oncomplete 事件,但我不知道这将如何发生(不熟悉 JSF)。

    【讨论】:

    • 感谢您的帮助,但我认为我不能为 JSF ajax oncomplete 编写事件处理程序,至少据我所知。
    • 那么你必须将queryFunctions设为全局。
    猜你喜欢
    • 1970-01-01
    • 2021-08-19
    • 2015-05-12
    • 2016-07-14
    • 2023-03-12
    • 1970-01-01
    • 2021-08-20
    • 2010-12-19
    • 1970-01-01
    相关资源
    最近更新 更多