4

introjsライブラリを使用しています。

元のコードはこちらをご覧ください。

メソッドvar = new IntroJs()を呼び出すのではなく、書き込めるようにしたい。start()

どうすればそれを達成できますか?

4

4 に答える 4

2

introJs が提供するファクトリを単純にラップして、ラッパーで start を呼び出してみませんか?

次のようなもので外部的に行うことができます(テストされていません):

var introJsWrapper = function(targetElm) {
    var ijs = introJs(targetElm);
    ijs.start();
    return ijs;
};

または、メイン関数のプロパティとして公開することで、introJs コードのフォーク内でそれを行うことができます。

var introJs = function (targetElm) {
    if (typeof (targetElm) === 'object') {
    // ...
}
introJs.autoStart = function(targetElm) {
    var ijs = introJs(targetElm);
    ijs.start();
    return ijs;
};

introJs では、メイン関数は非常に薄いパラメーター テスト/変更ラッパーであり、既に内部コンストラクターを囲んでいることに注意してください。間接的に呼び出すと、コンストラクターが呼び出されます。したがって、私が見る限り、この内部コンストラクター関数に直接アクセスする必要はありません。

于 2013-05-09T20:31:51.757 に答える
1

ま、これでいいでしょう。コードはいくつかの内部関数が実行されていることを暗示しているように見えるため、これらはクロージャーで囲まれていると思います。これが私が集めたものです。thiswhen 呼び出しnew IntroJSがコンストラクターでどのように使用されるかがわからないため、完全な実装ではありません。私が知っているのは、プロトタイプ関数がいくつかのプロパティで動作していることだけです。

//internal functions
function _mergeOptions(target){/*implementation*/}
function _introForElement(el){/*implementation*/}
function _goToStep(step){/*implementation*/}
function _exitIntro(target){/*implementation*/}
function _setHelperLayerPosition(nodeList){/*implementation*/}

//constructor
function IntroJs(first){
  this._options = {};
  this._introChangeCallback;
  this._introCompleteCallback;
  this._introExitCallback;
}
于 2013-05-09T20:17:04.630 に答える
0

空のコンストラクターだけで十分です。Janさんの言う通り、かなり駄目ですが、表記がよければ…

http://plnkr.co/edit/eFzkKJ14TeaMY44GDxR2

于 2013-05-09T20:11:46.000 に答える