javascript - 尝试为 qx.ui.embed.Html 制作一个带有 Non-Native 、 qooxdoo-Themed 滚动条的小部件

标签 javascript scroll themes qooxdoo

我正在尝试使用 Qooxdoo 主题滚动条来实现 qx.ui.embed.Html。 我想在 virtual list 内实现它。 我需要的只是一个带有自定义(qx 主题)滚动条的 qx.ui.embed.Html 小部件,因为它在 native 滚动中非常丑陋。

这是我的测试:

http://tinyurl.com/kcouvj2

它可以在 Playground 上使用。

但我尝试将其变成一个小部件:

(我不是这方面的专家):

qx.Class.define("phwabe.view.ChatView.PostItem",
{
  extend : qx.ui.container.Scroll,
  properties :
  {
    /** Any text string which can contain HTML, too */
    html :
    {
      check : "String",
      apply : "_applyHtml",
      event : "changeHtml",
      nullable : true
    }
  },

  members :
  {
    construct : function()
    {
        this.base(arguments)
    },
    _createChildControlImpl : function(id)
    {
      var control;
      switch(id)
      {
        //case "icon":
        //  control = new qx.ui.basic.Image(this.getIcon());
        //  control.setAnonymous(true);
        //  this._add(control, {row: 0, column: 0, rowSpan: 2});
        //  break;
        case "html":
          control = new qx.ui.embed.Html()
          control.setAllowGrowX(true);
          control.setOverflowY('hidden');
          control.setAllowShrinkY(false)
          this.add(control)
      }
    },
    _applyHtml : function(value, old)
    {
      var post = this.getChildControl("html");
      // Workaround for http://bugzilla.qooxdoo.org/show_bug.cgi?id=7679
      // Insert HTML content
      post.setHtml(value||"");
    }
  }
})

但这很难失败:

错误:创建小部件的子控件“html”时出现异常 phwabe.view.ChatView.PostItem[446-0]:不受支持的控件: Pane

我显然做错了。在 qooxdoo 中实现它的任何正确方法吗?

最佳答案

您需要返回创建的控件 - 如果没有匹配的控件(在您的情况下为“ Pane ”),则返回基类方法:

// overridden
_createChildControlImpl : function(id)
{
  var control;

  ...

  return control || this.base(arguments, id);
}

这是一个更改后的 Playground 示例:http://tinyurl.com/loljtz6

如果高度未知,则需要添加一种机制来自动调整 qx.ui.embed.Html 小部件的内容大小,因为没有自动调整大小。

关于javascript - 尝试为 qx.ui.embed.Html 制作一个带有 Non-Native 、 qooxdoo-Themed 滚动条的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523855/

相关文章:

javascript - 在 body 上滚动监听器

wordpress - 无法让 wordpress register_nav_menus 工作

javascript - 使用 Angular JS 添加图像

javascript - data-ng-options 中的自定义 html 内容

javascript - 使用 a 标签中的链接在点击时发出 AJAX 请求

jquery - 如何使用 jQuery 对固定 div 进行动画处理而不将页面滚动条重置到顶部

jQuery scrollLeft() 被浏览器自动滚动到最后位置劫持

javascript - 如何构建使用在不同框架中渲染的 DOM 的 React 代码?

python - 获取有关 Python App Engine 中静态文件的信息;解决方法

ASP.NET 主题皮肤