我正在使用GwtBootstrap3 0.9.3并使用UiBinder放置了一些Widgets。类org.gwtbootstrap3.client.ui.CheckBox和org.gwtbootstrap3.client.ui.Button按钮的复选框正常工作。当我点击它们时,它们会触发ClickEvents。
但选择类org.gwtbootstrap3.extras.select.client.ui.MultipleSelect和org.gwtbootstrap3.extras.select.client.ui.Select在点击它们时不会触发任何事件。在制作或更改选择时,他们不应该发布com.google.gwt.event.logical.shared.ValueChangeEvent吗?
事件处理程序看起来像这样:
@UiHandler("simpleSelect")
void onValueChangeSimple(ValueChangeEvent<String> event) {
do.somethingSimple();
}
@UiHandler("multiSelect")
void onValueChangeMultiple(ValueChangeEvent<List<String>> event) {
do.somethingMultiple();
}
当我点击这些widges时,ValueChangeEvent永远不会被触发。
但是当我以编程方式设置值时
simpleSelect.setValue("Item 1" , true);
将触发ValueChangeEvent并调用do.somethinSimple()。
出了什么问题?如何通过使用UI来使这些选择小部件触发ValueChangeEvents?
答案 0 :(得分:0)
我使用GwtBootstrap3Extras 0.9.3 + GWT 2.7 + SuperDevMode测试了以下实现。
继承* .gwt.xml:xmlns:select="urn:import:org.gwtbootstrap3.extras.select.client.ui
*。使用名称空间<select:Select ui:field="simpleSelect">
<select:Option>A</select:Option>
<select:Option>B</select:Option>
<select:Option>C</select:Option>
</select:Select>
<select:MultipleSelect ui:field="multiSelect">
<select:Option>A</select:Option>
<select:Option>B</select:Option>
<select:Option>C</select:Option>
</select:MultipleSelect>
的ui.xml:
@UiField
Select simpleSelect;
@UiField
MultipleSelect multiSelect;
@UiHandler("simpleSelect")
void onValueChangeSimple(ValueChangeEvent<String> event) {
GWT.log("single changed");
}
@UiHandler("multiSelect")
void onValueChangeMultiple(ValueChangeEvent<List<String>> event) {
GWT.log("multi changed");
}
ViewImplementation:
class MenuView: UIView {
var addButton: AddButton!
var settingsButton: SettingsButton!
// ........
func setConstraints (withBarReference reference: NSLayoutYAxisAnchor) {
NSLayoutConstraints.activateConstraints([
// ........
addButton.centerXAnchor.constraintEqualToAnchor(self.centerXAnchor, multiplier: 0.5),
// ........
settingsButton.centerXAnchor.constraintEqualToAnchor(self.centerXAnchor, multiplier: 1.5)
])
}
}
这很好用。每当我从Select或MultipleSelect中选择一个选项时,该消息都会记录到浏览器控制台。如果您以与应该工作相同的方式配置项目。否则你有另一个问题(那么你应该发布你的UiField定义,* ui.xml,...)