Extjs 4.2.1 Ext.Msg.show rtl无效

时间:2014-12-21 08:38:58

标签: extjs extjs4 right-to-left

在我的index.html中使用

<script type="text/javascript" src="../ext-all-rtl.js></script>

我试图使用属性 rtl:true 同样显示msgbox:

Ext.Msg.show({
    rtl: true,
    title: "...",
    msg: "...",
    buttons: Ext.MessageBox.OK,
    icon: Ext.MessageBox.Error,
    renderTo: Ext.getBody()
});

当显示rtl的消息不起作用时,它会显示组件ltr。

其他组件(如窗口,面板等)与rtl属性一起正常工作。

为了使用rtl功能,MessageBox还需要其他东西吗?

2 个答案:

答案 0 :(得分:0)

&#34; rtl:true&#34; config在整个组件层次结构中继承,您应该只需添加&#34; rtl:true&#34;到层次结构中的顶级组件(通常是视口)。这消除了设置&#34;方向的任何需要:rtl&#34;你自己,因为rtl层次结构中的组件将具有&#34; x-rtl&#34;将类添加到其元素中。

您还需要确保使用rtl样式表,因为Ext JS组件需要相当多的特殊样式才能在rtl模式下正常工作。例如,对于经典主题,这将是:ext-theme-classic-all-rtl.css

如果您仍然遇到困难,请查看此示例:http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/rtl/rtl.html?theme=classic

答案 1 :(得分:0)

好吧,可能我做得不对。

我将 rtl:true 参数传递给消息框的方法 show ,而不是将消息框本身定义为rtl。

我的答案是创建支持rtl对齐的新消息框:

var message = Ext.create('Ext.window.MessageBox', {rtl: true});

然后我可以像这样使用它:

message.show({
    title: "...",
    msg: "...",
    buttons: Ext.MessageBox.OK,
    icon: Ext.MessageBox.Error,
});