openui5 1.38附加事件滚动条

时间:2016-07-15 10:20:07

标签: scrollbar sapui5

从上次版本更新(从openui5 1.36.12到openui5 1.38.4),以下代码不再有效:

var myTable = new sap.ui.table.Table();
myTable ._oVSb.attachScroll(function() { 
   colorTheTableRows();
})

我正在使用" attachScroll"事件,以使用特定逻辑为表行着色。 自上次openui5版本更新以来,我在控制台中收到此错误:

Uncaught TypeError: Cannot read property 'attachScroll' of undefined

我试图调试此问题,似乎已从sap.ui.table.Table中删除了对象_oVSb。

我的最终目标是根据内容绘制不同颜色的行......有没有其他方法可以达到此功能?

由于

4 个答案:

答案 0 :(得分:1)

您仍然可以使用jQuery的.scroll()获取表格的滚动事件。

onAfterRendering: function(){
    //Register handler for scroll event

    $("tbody").scroll(function(){
        // your stuff
    });

}

Demo

答案 1 :(得分:1)

即使我想要这个事件也有一些如何来到这个线程。我试过@Dopedev解决方案它没有工作然后我改变了位,如下所示

              $("#<tablid>-vsb").scroll(function() { 
                 console.log("Table is scrolled")
              });

而不是获取tbody获取 table-id -vsb 并附加滚动功能

答案 2 :(得分:1)

我知道之前的帖子之一已被标记为“正确”的答案,但它对我不起作用,所以我想我会发布我的工作解决方案,因为它可能对其他人有帮助。以下代码将有效地“附加”到1.38中的表的垂直滚动事件:

    onAfterRendering: function() {
        if (this.firstTime) { //You only want to override this once
            var oTable = this.getView().byId("<YOUR_ID_HERE>");
            //Get a reference to whatever your custom handler is
            var oHandler = this.handleScroll;

            //Store a reference to the default handler method
            var oVScroll = oTable.onvscroll;
            oTable.origVScrollHandler = oVScroll;

            oTable.onvscroll = function(i) {
                //Call the 'default' UI5 handler
                oTable.origVScrollHandler(i);

                //Call your handler function, or whatever else you want to do
                oHandler();
            };

            this.firstTime = false;
        }
    },

答案 3 :(得分:0)

var myTable = new sap.ui.table.Table("myTable");

渲染后:

sap.ui.getCore().byId("myTable-vsb").attachScroll(function() { colorTheTableRows(); })