gpt4 book ai didi

dart - 无法在IE 10和IE 11中运行已编译的dart代码

转载 作者:行者123 更新时间:2023-12-03 02:53:46 27 4
gpt4 key购买 nike

我在使用小型 Dart 应用程序时遇到了麻烦,该应用程序在Chrome和Firefox中运行良好,并且...猜怎么着....在IE 10和11中不起作用(Win10 Preview中的Spartan项目有效!)。

这是一个简单的UI控件逻辑,如下所示:

...
//init elements
SelectElement studyList = querySelector('#studies');
SelectElement roleList = querySelector('#roles');
SelectElement siteList = querySelector('#sites');
ButtonElement createButton = querySelector('#create');

//Kick in the UI logic
_populateStudies();

//UI logic
_populateStudies() {
for (var study in studies) {
OptionElement option = new OptionElement();
option.text = study;
studyList.children.add(option);
}
for (OptionElement element in studyList.children) {
throw new Exception("ADDING_HANDLER");

//执行以下命令,似乎附加了处理程序
    element.onClick.listen(_studyClickHandler);
}
}

//永远不要在上从IE中执行
_studyClickHandler(Event e) {
siteList.children.clear();
roleList.children.clear();
_populateRoles();
}

_populateRoles(){
List<String> roles = context.getRolesFor(studyList.selectedOptions[0].text);
for (var role in roles) {
OptionElement option = new OptionElement();
option.text = role;
roleList.children.add(option);
}
for (OptionElement element in roleList.children) {
element.onClick.listen(_roleClickHandler);
}
}
...

在IE中,第二个选择框保持为空。
Chrome和Firefox将按预期方式处理代码,并根据第一个选择框中选择的元素填充该框的子级。
我不知道问题是什么...我将处理程序重构为匿名函数
onClick.listen((_){
handle stuff
});

控制台完全没有显示任何错误。
也许有一个简单的解决方案,但是我对 Dart 还是比较陌生,无法解决吗?

谢谢

最佳答案

我猜您提到的浏览器中的click不支持<option>处理程序注册。或者,您可以在SelectElement.onChange上注册回调,并使用类似以下内容的方法检索所选内容:

import 'dart:html';
void main() {
SelectElement select = querySelector('select');
select.onChange.listen((_) {
final opt = select.options[select.selectedIndex];
print(opt.value);
});
}

您可以使用这些浏览器 try it on DartPad

关于dart - 无法在IE 10和IE 11中运行已编译的dart代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30391819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com