這讓我抓狂的一個週末,雖然我發現了什麼似乎是一個可行的解決方案,我的問題是,是否有一些關於使用道場/ Dijit的我是根本失蹤。拋出:DOMException與道場,dgrid,TabContainer的,和JsonRest
這裏的問題:每當我創建其中dgrid使用JsonRest商店,是一個TabContainer的的隱藏選項卡(一個不是最初選擇的一個)頁面,我得到DOMExceptions和有點搞砸了dgrid。特別是,dgrid有數據的最後一行下大的空閒空間,並滾動到dgrid的數據的底部或頂部罰中附加DOMExceptions。
如果我對一個列標題點擊排序dgrid,它重置其佈局和工作正常。如果dgrid在頁面的可見部分初始化而不是未選定的選項卡,則沒問題。如果我使用一個內存中存儲,而不是JsonRest的,一切都很好(即使dgrid在一個隱藏的選項卡初始化)。如果dgrid在一個隱藏的標籤中初始化,但沒有存儲,那麼很好(但是爲空)。
基於證據,我猜想這個問題與JsonRest查詢需要花費時間並出於某種原因在初始化時打破了dgrid的事實有關。我的解決方案是在沒有商店的情況下創建dgrid,然後在顯示包含dgrid的選項卡時設置商店。雖然這看起來很爛。我應該能夠創建一個商店的dgrid,而不必在外部擺弄它。因此,我有點黑客解決方案正確(或至少合理)的方式來處理與服務器提供的數據初始化隱藏的dgrid,或者有什麼關於TabContainer + dgrid + JsonRest的設置,我錯過了?
如果我打破地方合同它不會讓我感到吃驚; Dijit生命週期的細節對我來說仍然有點模糊.dgrid實際上包含在一個ContentPane中。那麼,爲了更加正確,它是ContentPane的domNode(在CP的postCreate中,我使用它的domNode作爲網格的連接點,如'var grid = declare([Grid,DijitRegistry],{...},this .domNode)')。這似乎工作,因爲一旦包含選項卡被選中,網格將自己調整爲ContentPane。 – jason0x43 2012-02-13 15:47:27