2013-10-16 59 views
0

我想綁定一個函數,在網格的renderRow事件之後執行。所以我使用了DOJO的aspect.after,但這裏是踢球者。這在該行確實呈現之前執行,因此divs \ tds尚未在屏幕上顯示。而且由於我確實想要使用這些項目的位置,所以使用dojo/domgeometry返回填充零的對象。如何確保在行顯示完成後執行我的功能?在dgrid renderRow後執行一個函數

下面你可以找到我稱之爲的JS。

​​

編輯:另一件事,我使用樹擴展,並且renderRow發生後單擊父級展開。

編輯:所以這裏是一些更多的信息,以防萬一它是需要的。這家店很簡單:

store = new Observable(new Memory({'data': data, 
     'getChildren': function(parent, options){ 
      return this.query({'parent': parent.id}, options); 
     }, 
     'mayHaveChildren': function(parent){ 
      return parent.hasChildren; 
     } 
    })); 

和電網聲明爲:

grid = new (declare([OnDemandGrid, Selection, Keyboard, CompoundColumns]))({ 
     'columns': nCols, 
     'query': { 'parent': undefined }, 
     'store': store 

    }, gridId); 

這方面的後

if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) { 
    console.log('just before adding the refresh'); 
     on.once(this, 'dgrid-refresh-complete', function(){ 
      console.log('finished refreshing'); 
      require(['dojo/dom-geometry','dojo/dom-construct'], 
       function(domGeom, domConstruct){ 
        console.log(domGeom.position(node)); 
       } 
      ); 
     }); 
} 

console.log('finished refreshing');從未內部被調用,同樣沒有了位置日誌。

在網格上有很多列,一對夫婦綁在一個compouding列,一個名爲colum這是一棵樹,和其他幾個。展開樹時調用renderRow!

Image of the grid with a couple of data removed

+0

@ahmed非常糟糕的主意。 –

+0

什麼是壞主意? –

+0

setTimeout是在已被刪除的評論中建議的。 –

回答

3

可以推遲domGeom.position(row)調用,直到dgrid-refresh-complete事件已發出。你需要包含dojo/on。

aspect.after(grid, 'renderRow', function(row, args) { 
    var object = args[0]; 
    if (object.type == 'tipo_exec') { 
     row.className += ' black'; 
    } else if(object.type == 'exec') { 
     row.className += ' gray'; 
    } else if(object.type == 'ic') { 
     if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) { 
      on.once(this, 'dgrid-refresh-complete', function(){ 
       require(['dojo/dom-geometry','dojo/dom-construct'], 
        function(domGeom, domConstruct){ 
         console.log(domGeom.position(row)); 
        } 
       ); 
      }) 
     } 
    } 
    return row; 
}); 

編輯 更新的jsfiddle以適應樹 http://jsfiddle.net/rayotte/q8bCx/2/

+0

甜,嘗試它,並會在 –

+0

後發佈結果它不起作用。我嘗試將'dgrid-refresh-complete'事件連接到網格和grid.domNode(因爲它是在onDemandList.js上調用的),但都沒有觸發任何選項。如果它有什麼區別,這是網格的聲明。 'declare([OnDemandGrid,Selection,Keyboard,CompoundColumns])' –

+0

該代碼已經過測試和工作。也許'if((typeof(object.dep)!='undefined')&&(object.dep.length> 0))'不滿足條件之一。 –

相關問題