Dojo 如何获得可调整大小的dijit对话框

Dojo 如何获得可调整大小的dijit对话框,dojo,dialog,dijit.layout,dynamic-resizing,Dojo,Dialog,Dijit.layout,Dynamic Resizing,在dojo中,我打算通过将鼠标拖动到最右边的角边来使用可调整大小的对话框。对话框本身没有调整其大小的属性。所以我尝试使用浮动窗格,然后将对话框添加为子对话框。我计划为子对话框(即对话框)使用浮动窗格的可调整大小属性。这种方法错了吗? d=新建对话框({ 标题:“测试对话框”, 内容:“嗨” }); 这实际上取决于您试图从浮动窗格复制对话框的哪个方面。例如,如果您想要默认的操作窗格和/或对话框覆盖,那么最好只扩展对话框并添加一个调整大小的处理程序,就像浮动窗格那样 如果您喜欢浮动窗格的更多方面(例

在dojo中,我打算通过将鼠标拖动到最右边的角边来使用可调整大小的对话框。对话框本身没有调整其大小的属性。所以我尝试使用浮动窗格,然后将对话框添加为子对话框。我计划为子对话框(即对话框)使用浮动窗格的可调整大小属性。这种方法错了吗? d=新建对话框({ 标题:“测试对话框”, 内容:“嗨” });


这实际上取决于您试图从浮动窗格复制对话框的哪个方面。例如,如果您想要默认的操作窗格和/或对话框覆盖,那么最好只扩展对话框并添加一个调整大小的处理程序,就像浮动窗格那样

如果您喜欢浮动窗格的更多方面(例如,可移动、可调整大小、锁定到父窗口),那么您可能应该扩展浮动窗格并添加您喜欢的对话框的属性

不管怎样,这都取决于你想用这个新对话框完成什么,以及你需要什么功能。我的建议是扩大这两个范围。不过,我不建议通过将对话框放置到浮动窗格中来实现这两种方法,因为我看不出它将如何实现您尝试执行的操作。如果你能更多地解释你的用例,那么我可以给你一个更具体的例子

[编辑]

您可能希望了解以下内容:了解更多关于如何扩展小部件的信息

查看浮动窗格代码,您需要做的是将resizeHandle添加到扩展对话框中,如下所示:

<span dojoAttachPoint="resizeHandle" class="dojoxFloatingResizeHandle"></span>
this._resizeHandle = new ResizeHandle({
    targetId: this.id,
    resizeAxis: this.resizeAxis
},this.resizeHandle);

可在dojox/layout/ResizeHandle上找到调整大小句柄

谢谢您的提问和建议。这对我很有用,如果其他人需要类似的东西,我会在这里添加它:

define([
  'dojo/_base/declare',
  'dijit/_TemplatedMixin',
  'dijit/_WidgetsInTemplateMixin',
  'dojo/text!./DialogResize.html',
  'dojox/layout/ResizeHandle',
  'dijit/Dialog'], function (
    declare,
    _TemplatedMixin,
    _WidgetsInTemplateMixin,
    template,
    ResizeHandle,
    Dialog
    ) {

    return declare('app.Dialog.Resize', [Dialog, _TemplatedMixin, _WidgetsInTemplateMixin], {
        templateString: template,

        // resizeAxis: String 
        //      One of: x | xy | y to limit pane's sizing direction 
        resizeAxis: "xy", 

        postMixInProperties: function() {
          this.inherited(arguments);
          //console.log('DialogResize');
        },

        startup: function() {
            //console.log('DialogResize startup');
            // The orginal template was modifed by adding a resizeHandle handle, which is then initialised here
            this._resizeHandle = new ResizeHandle({
              targetId: this.id,
              resizeAxis: this.resizeAxis
          }, this.resizeHandle);            
        }

  });
});
然后DialogResize.html:

<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">
    <div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">
        <span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"
              role="heading" level="1"></span>
        <span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabindex="-1">
            <span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>
        </span>
    </div>
    <div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>
    ${!actionBarTemplate}
    <span dojoAttachPoint="resizeHandle" class="dojoxFloatingResizeHandle"></span>
</div>

x
${!actionBarTemplate}

我打算使用一个可调整大小的对话框。可以调整大小,如果用户试图增加对话框的大小,他可以通过在右下角拖动来增加对话框的大小。我不清楚的概念,所以我尝试使用上述方法查看我的编辑,以更好地了解需要做什么
<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">
    <div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">
        <span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"
              role="heading" level="1"></span>
        <span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabindex="-1">
            <span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>
        </span>
    </div>
    <div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>
    ${!actionBarTemplate}
    <span dojoAttachPoint="resizeHandle" class="dojoxFloatingResizeHandle"></span>
</div>