2011-05-11 98 views

回答

27

您應該在設置值之前掛起事件並在此之後恢復事件。例如:

myCheckBox.suspendEvents(false); // Stop all events. 
           //Be careful with it. Dont forget resume events! 
myCheckBox.setValue(!myCheckBox.getValue()); // invert value 
myCheckBox.resumeEvents(); // resume events 
1

爲什麼不只是設置r.checked = true,這是行不通的?

1

爲什麼不只是設置r.checked = true,這是行不通的?

設置選中的屬性只會影響非呈現控件分配初始控制值。渲染後,您不能使用它來更改值。

掛起/恢復事件是一種很好的做法,可以在不發送通知的情況下更改控制值。你

也可以把選中的狀態immedially到DOM元素:

item.el.dom.checked = true;

0

我已經使用Google之前嘗試接受的答案,但它並沒有在4.1.3工作。下面做了:

myCheckBox.setRawValue(true); 

希望這有助於未來的谷歌。

+1

只需注意一點:通過使用「setRawValue」,第一個取消選中的事件不會觸發。資料來源:http://www.sencha.com/forum/showthread.php?263404-Checkbox-does-not-fire-quot-change-quot-event-on-the-first-change-after-setRawValue(true) &S = 2fb682a6d30f35675c73e5c6230c476d – pvieira 2013-07-14 11:36:03

0

調用suspendEvents(false)之前設置的值,並resumeEvents()事後比setRawValue一個更通用的方法,因爲如果你使用轉換器(比方說,1true0false),他們將繼續工作。

相關問題