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");