1

http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.jsの Dojo Toolkit 1.7.2 を使用しています。

ダイアログ内にスクロール可能な(ヘルプタッチで)コンテンツを表示する必要があります。また、可能であれば、モバイルでも同様にダイアログ内でビュー間の遷移が必要になります。

私がすること(コードの簡略版):

var dialog = new Dialog();
var view = new ScrollableView({
    selected: true
});

//add some content inside view. Content heigh is greater than height of dialog.

これを行うと、ダイアログはコンテンツの高さ全体に合わせようとします。

次の試行:

var dialog = new Dialog({
    style: {
        width: 600,
        height: 400
    }
});

また

dialog.resize({w: 600, h: 400});

現在、ダイアログの高さは固定されていますが、内部の ScrollableView インスタンスはコンテンツの下部までスクロールしません。

ソースを掘り下げると、ScrollableView は dojox/mobile/scrollable を継承する dojox/mobile/_ScrollableMixin を継承していることがわかります。

dojox/mobile/scrollableのresize()関数は、スクロール機能を計算するためにウィンドウの高さを使用します。

独自のバージョンの ScrollableView を実装せずに必要なものを入手する方法はありますか?


解決:

var dialogRect = domGeometry.getMarginBox(dialog.domNode);
var headerRect = domGeometry.getMarginBox(dialog.titleBar);
var containerNodePaddingTop = domStyle.get(dialog.containerNode, "paddingTop");
var containerNodePaddingBottom = domStyle.get(dialog.containerNode, "paddingBottom");

var viewHeight = dialogRect.h - headerRect.h - containerNodePaddingTop - containerNodePaddingBottom;
var view = new ScrollableView({
    selected: true,
    height: viewHeight.toString() + "px"
});
// or
// view.set("height", viewHeight.toString() + "px");
4

1 に答える 1