- 道場1.8.1
- dgrid 0.3.4預
- IE 10.0.9200
短版:
我有我也在聽某些dojo/on事件(來自_WidgetBase),但他們有時會被調用有時不。 dgrid,分頁和IE都在混合中。可能是什麼問題呢?
詳情:
我有一個dgrid電網這個奇怪的情況,並不亞於我試過,我一直沒能找出問題的真正原因。我會盡可能詳盡,但可隨時索取更多信息。
我有一個使用分頁和組合框的dgrid組件,其中有一些值可以過濾。這幾乎是它是如何設置的(簡化,實際的代碼引用其他模塊和擁有的東西更多模塊化):後來
// GridContainerWidget
var CustomGrid = declare([Grid, CompoundColumns, Selection, Keyboard, Pagination], {
selectionMode: "single",
rowsPerPage: 20
});
var grid = new CustomGrid({
deselectOnRefresh: false
}, domContainer);
網格是綁定到JsonStore。
我的過濾器設置以下列方式:
// SearchBarWidget
// inside a custom widget, inheriting from _WidgetBase
var self = this;
var statusCombo = new ComboBox({
store: new Memory(/* data and labels */),
onChange: function (selection) {
self.emit("status_changed", self.getSomeData());
}
}, comboDomContainer);
再換一個封裝兩個濾波器和電網的部件:
// GenericListWidget, contains both the SearchBarWidget and the GridContainerWidget
var self = this;
this._searchToolbar.on("status_changed", function (data) {
// ... some "calibrations" ...
self._grid.set("query", { newCriteria: "something" });
});
這是它會很奇怪:
有時在IE將會調用,但不會調用回調
on("status_changed")
。其他時間,發射將被調用,回調也會被調用(預期)。- 這與分頁或電網刷新莫名其妙的事,但我沒能隔離重現該問題
在更深的挖掘到這個完全相同的步驟,我見過IE到達點在那裏執行以下操作:(道場/上,線314至322)
var nativeEvent = target.ownerDocument.createEvent("HTMLEvents"); nativeEvent.initEvent(type /* "status_changed" */, !!event.bubbles /* true */, !!event.cancelable /* true */); // ... copies properties ... return target.dispatchEvent(nativeEvent) && nativeEvent; // returns true
我確認,
remove()
呼叫的掛機永遠不會被稱爲- 我驗證了DOM元素正被觸發的事件,並聽取到實際上是相同的,每次
我的問題是:我怎麼能找到潛在的問題,並確保我的( )每次都會調用回調函數?
這似乎可能的情況。我會將更改集應用到網格中(因爲我的項目的大小不允許我輕鬆升級),並且由於此問題似乎是由非導航錨點觸發的事件發生的,因此我的問題應該消失。我會回來一些結果! – Alpha
花了我一段時間,但直接應用修復作爲一個mixin做的伎倆。非常感謝! – Alpha