javascript - Google Dart 添加元素到 DropDown

标签 javascript html json dictionary dart

我正在尝试通过 Google Dart 将元素动态添加到 HTML 下拉列表中。通过使用原始 JSON 提要中的 map 或字符串添加子元素,我没有多少运气以标准方式添加元素。也许还有另一种方法?忽略 selectedIndex,因为它用于调试目的。请参阅下面的 HTML 和 Dart 代码,如果您需要更多信息,请告诉我。

<select id="asset" class="titilium" selectedIndex="{{currentIndex}}" value="{{dropDownValue}}" on-change="{{changedHandler}}" required>
                <option selected disabled>Select an existing set of query results:</option>
                <option value="Recent Choices">Recently Choices</option>
</select>

Dart 尝试:

void loadDropDown()
  {
    dropDownURL = "";
    print(dropDownURL);

    var request = HttpRequest.getString(dropDownURL).then(onDropDownLoaded);
        request.catchError(handleFailure);
  }

 void onDropDownLoaded(String response)
 {
   var jsonString = response;
   var dropDownValue = shroot.querySelector("#asset");
   String displayName = "";

   Map jsonObject = JSON.decode(jsonString) as Map;
       dropDownList = jsonObject["serviceResponseValue"] as List<Map>;

   LinkedHashMap<String, Map> dataMap = new LinkedHashMap<String, Map>();
       for(var d in dropDownList)
       {

         HashMap rowMap = new HashMap();

//         String domainId = d["targetAsset"]["id"];
//         dataMap[domainId] = rowMap;
//         rowMap["id"] = domainId;

         //rowMap["displayName"] = d["filterInputParameters"]["displayName"];

         //dropDownValue.children.add(rowMap["displayName"] = d["filterInputParameters"]["displayName"]);
         displayName = rowMap["displayName"] = d["displayName"];
         //dropDownValue.children.add(rowMap["displayName"] = d["displayName"]);

         print(d);
         print(displayName);
       }
 }

最佳答案

SelectElement 的子元素是 OptionElements。因此,您需要提供 OptionElements。

void onDropDownLoaded(String response)
{
  SelectElement dropDown = querySelector("#asset");

  Map jsonObject = JSON.decode(response) as Map;
  List<Map> dropDownList = jsonObject["serviceResponseValue"] as List<Map>;

  for(Map d in dropDownList)
  {
    dropDown.children.add(new OptionElement(data: d['displayName'], value: d['id']));
  }
}

代码从解析的 JSON 对象“serviceResponseValue”中取出每个对象并创建一个新的 OptionElement,其中向用户显示的数据是键“displayName”后面的文本,在您的示例中结果是在过去 36 小时内注册的域,对于用于从其他选项中识别选项的值,我选择了“id”文本,它将在您的 html 中为您提供一个选项看起来像:

<option value="8a49861a47b12b7c0147b12b7fe60000">Domains registered during the last 36 hours</option>

关于javascript - Google Dart 添加元素到 DropDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203920/

相关文章:

json - PostgreSQL - 从查询构造格式良好的 json 对象

javascript - 将 javascript 函数参数发送到 ASP.NET MVC 帮助器方法

javascript - 使用带有参数回调的数组的 Node 异步 waterfall

jquery - 使用 jQuery 获取 html 元素的特定祖先

javascript - 如何隐藏特定列表中的图像并使它们在其他列表中可见

javascript - 有什么方法可以使用元素的 id 或类来捕获函数内部的事件

javascript - 在 [array] 内设置未声明的 {object} 的原型(prototype)属性

javascript - 如何通过 id 检索动态数量的元素

javascript - 在网站上创建幻灯片

angularjs - md-items 未在 md-autocomplete Angular Material 中正确更新建议列表