我该怎么做才能防止一个元素的变化触发其他元素的变化?

时间:2013-06-21 11:28:33

标签: events element dart

在lib / tool_bar.dart的ToolBar类中

https://github.com/dzenanr/magic_boxes/blob/master/lib/tool_bar.dart

https://github.com/dzenanr/magic_boxes有两个元素

InputElement itemNameInput;

SelectElement itemCategorySelect;

itemNameInput.onChange.listen((Event e){

itemCategorySelect.onChange.listen((Event e){

itemCategorySelect中的更改会触发itemNameInput中的更改!?此更改使该工具的使用变得复杂。

如何防止一个元素的变化触发其他元素的变化?

在工具中,输入所选概念的新属性时会发生:

可以通过在属性字段中输入其名称,将新属性添加到所选概念中。使用Enter键查看概念属性中的名称。 如果您想使用与建议不同的特性, 首先更改它们,然后在属性字段中输入一个名称(我想避免这种情况。)

问题: 如果首先输入属性名称而不使用Enter键,则更改 至少有一个特征(例如,属性类别),名称出现 在概念的属性中,但没有改变的特征。 然后,您必须选择它(再次输入其名称)才能应用更改。

1 个答案:

答案 0 :(得分:1)

我找到了一个有效的解决方案:

变化

itemNameInput.onChange.listen((Event e){

itemNameInput.onKeyPress.listen((KeyboardEvent e){

  if (e.keyCode != 13) return; // 13 is Enter key

这样,只有在按下Enter键后才会在概念的属性中显示属性名称。

但是,在Dart API文档中,我发现不推荐使用KeyboardEvent。

http://api.dartlang.org/docs/releases/latest/dart_html/KeyboardEvent.html

“注意:在DOM Level 3中不推荐使用KeyboardEvent接口,而是支持新的TextInput接口和相应的textinput事件,这些事件改进了对备用输入方法的支持。”

我还没有找到TextInput接口,也没有找到textinput事件!?