對於使用url方式的初學者,經常碰到重復請求的問題,這個問題的根源是因為一旦設置了url參數,Datagrid組件在實例化的時候就會做請求,如何避免二次加載這樣問題呢,個人覺得注意以下兩點基本就可以防止二次加載了。
- 使用load和reload函數去動態加載數據,而不是選擇再次渲染組件,而再次渲染組件的目的僅僅是為了設置url,這得不償失,url的設置可以通過options方法獲取到組件實例的opts,然后在給opts.url重新賦值即可;
- 用class方式注冊組件,一般只將屬性寫在DOM里,而事件通常還是用 javascipt調用datagrid構造函數注冊,這個過程中就發生了二次請求:第一次是class方式實例化的時候,第二次是javascript 注冊事件的時候。所以在要綁定事件的情況下,索性就不要使用class方式注冊了。
- 說這么多其實上面的都是扯淡;直接上列子:<table id="materialData" class="easyui-datagrid" data-options="toolbar:'#tb'" ></table>把這里的class去掉就行了,改為:
<table id="materialData" data-options="toolbar:'#tb'" ></table>,因為我們在js里面是這樣寫的:$('#materialData').datagrid({});所以body里面不用再寫他的class,否則在頁面加載《table》時候就回去調用一次,而在js里面還會去調用! - 先寫這么多給自己理解吧,以后發現理解的不對了再補充!