0

以下に示すコードに少し似た YUI モジュールを作成しました。これは、YUI 自体のコア ファイル内と Moodle 内の両方で、こちらのように YUI3 の推奨パターンです。

問題は、IDE のファイル構造/ナビゲーター ペインにメソッド (以下のコードの initializer() や show() など) が表示されないことです。Y.extend() ロジックは、以下で使用されているサンドボックス化されたパターンの外側で YAHOO.lang.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

これはIntelliJで発生する可能性のあるバグのようです。詳細については、こちらをご覧ください。彼らが少なくとも理論的にはそれをサポートしていることを知っておくのは良いことです。

回避策として、JSDocを次のようにextends関数の上に追加できます。

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

これにより、すべてのメソッドが表示されます:)

于 2012-06-20T22:40:22.613 に答える
0

私がこれまでに見たすべての IDE (NetBeans、jEdit、Sublime、および少なくとも 4 つの異なる 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 に答える