0

我已经制作了一个 YUI 模块,有点像下面显示的代码,这是 YUI3 东西的推荐模式,在 YUI 自己的核心文件和 Moodle 中都是如此

问题是现在我在 IDE 的文件结构/导航器窗格中看不到任何方法(例如下面代码中的 initializer() 和 show())。尽管之前在下面使用的沙盒模式之外使用 YAHOO.lang.Extend() 工作正常,但 Y.extend() 逻辑似乎难以处理。

有没有人对如何解决这个问题有任何建议?它只是我的 IDE(尝试过 IntelliJ IDEA -此处的错误和 NetBeans)吗?YUI 开发人员肯定没有同样的问题吧?

YUI.add('moodle-local_hub-comments', function (Y) {

    var COMMENTSNAME = 'hub_comments';

    var COMMENTS = function () {
        COMMENTS.superclass.constructor.apply(this, arguments);
    }

    M.local_hub = M.local_hub || {};

    Y.extend(M.local_hub, Y.Base, {

        // Invisible property:
        event : null,

        // Invisible function:
        initializer : function (params) {
            // function code here
        },

        // Invisible function:
        show : function (e) {
            // function code here
        },

        // Invisible function:
        hide : function () {
            // function code here
        }

    }, {
        NAME : COMMENTSNAME,
        ATTRS : {
            commentids : {value : 450} 
        }
    });

}, '@VERSION@', {
    requires : ['base', 'overlay', 'moodle-enrol-notification']
    //Note: 'moodle-enrol-notification' contains Moodle YUI exception
});
4

2 回答 2

0

我见过的每个 IDE(我尝试过 NetBeans、jEdit、Sublime 和至少四种不同的 Eclipse JS 编辑器)都无法在大纲视图中显示像你的方法。我知道有一张票可以在 Eclipse ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=266113 )中解决这个问题,但我没有屏住呼吸:这似乎是一件非常困难的事情IDE 做的。

如果你愿意,你总是可以重构你的代码,使其对 IDE 更友好,但你会失去你的封装:

function initializer(e) {
   // function code here
}
function show() {
   // function code here
}
function hide {
   // function code here
}
function moodle-local_hub-comments (Y) {

    var COMMENTSNAME = 'hub_comments';

    var COMMENTS = function () {
        COMMENTS.superclass.constructor.apply(this, arguments);
    }

    M.local_hub = M.local_hub || {};


    Y.extend(M.local_hub, Y.Base, {

        event : null,

        initializer : initializer,

        show : show,

        hide : hide

    }
YUI.add('moodle-local_hub-comments', moodle-local_hub-comments, {
        NAME : COMMENTSNAME,
        ATTRS : {
            commentids : {value : 450} 
        }
    });

}, '@VERSION@', {
    requires : ['base', 'overlay', 'moodle-enrol-notification']
    //Note: 'moodle-enrol-notification' contains Moodle YUI exception
});
于 2012-06-20T21:52:02.700 回答
0

这似乎是 IntelliJ 的一个可能错误,详情请点击此处。很高兴知道他们至少在理论上支持它。

作为一种解决方法,可以在 extends 函数上方添加 JSDoc,如下所示:

/**
 * @class M.local_hub
 **/
Y.extend(M.local_hub, Y.Base, {

这使得所有方法都出现了:)

于 2012-06-20T22:40:22.613 回答