来自 API 的语义 UI 下拉选择内容
Semantic UI dropdown selection content from API
我正在使用语义 UI 2.0 并尝试使用从其 API 编辑的数据 return 在我的下拉列表中构建选项。
对于下拉列表本身,我使用的代码实际上与语义 UI 文档中显示的 this 代码相同:
<div class="ui search selection dropdown select-city">
<input type="hidden" name="city">
<i class="dropdown icon"></i>
<div class="default text">Select City</div>
</div>
我有一项服务 returns json 格式的城市,然后语义 UI 在控制台中显示结果对所有 261 个城市都成功:
"Using specified url" ["/cities/"] 1648
"Querying URL" ["/cities/"] 0
"Sending request" [undefined, "get"] 0
"Successful API Response" [Object { success=true, results=[261]}]
/cities 端点 return 一个 json 格式为:
{"success":true,"results":[{"description":"Opole","data-value":1},{"description":"Wrocław","data-value":2},{"description":"Warszawa","data-value":3},{"description":"Budapest","data-value":4},{"description":"Köln","data-value":5}, ...]}
似乎Semantic UI 没有直接理解json 的格式。
我试过很多格式的 json 属性,甚至试图改变一点 html。例如,试图在 select 的底部添加一个空的 <div class="menu">
,希望 Semantic UI 能够填充它,例如:
<div class="ui search selection dropdown select-city">
<input type="hidden" name="city">
<i class="dropdown icon"></i>
<div class="default text">Select City</div>
<div class="menu"></div>
</div>
我正在尝试将属性的格式与 example 中的属性相匹配,例如,使用 "data-value" 属性。
但是也没有用,我在源代码中看到了Semantic UI checks for that,所以没有什么区别。最后,我的问题仍然存在,下拉列表中没有插入任何项目 selection。
如果你不发布你正在使用的代码,我会在这里尝试一下,但是 dropdown
期望数据结果被键入为 { name: "Item 1", value: "value1" }
,如relevant part of the documentation.
如果您有不同的字段名称,那么您可以在设置中提供一个 fields
结构来覆盖这些:
$('.ui.dropdown').dropdown({
fields: { name: "description", value: "data-value" },
apiSettings: {
mockResponse: {
success: true,
results: [
{"description":"Opole","data-value":1},
{"description":"Wrocław","data-value":2},
{"description":"Warszawa","data-value":3},
{"description":"Budapest","data-value":4},
{"description":"Köln","data-value":5}
]
}
}
});
所需的最低 HTML 是:
<div class="ui search selection dropdown">
<div class="text">Search</div>
</div>
或:
<div class="ui search selection dropdown">
<input class="search"></input>
</div>
自动插入空 <div class="menu"></div>
,但需要 <input class="search"></input>
,并且只有在您已经有 <div class="text"></div>
元素时才会自动插入。
但是请注意,我认为下拉菜单行为有问题,它不会加载数据,直到您开始在搜索字段中输入内容,因此只需单击在下拉图标上是不够的。
我正在使用语义 UI 2.0 并尝试使用从其 API 编辑的数据 return 在我的下拉列表中构建选项。
对于下拉列表本身,我使用的代码实际上与语义 UI 文档中显示的 this 代码相同:
<div class="ui search selection dropdown select-city">
<input type="hidden" name="city">
<i class="dropdown icon"></i>
<div class="default text">Select City</div>
</div>
我有一项服务 returns json 格式的城市,然后语义 UI 在控制台中显示结果对所有 261 个城市都成功:
"Using specified url" ["/cities/"] 1648
"Querying URL" ["/cities/"] 0
"Sending request" [undefined, "get"] 0
"Successful API Response" [Object { success=true, results=[261]}]
/cities 端点 return 一个 json 格式为:
{"success":true,"results":[{"description":"Opole","data-value":1},{"description":"Wrocław","data-value":2},{"description":"Warszawa","data-value":3},{"description":"Budapest","data-value":4},{"description":"Köln","data-value":5}, ...]}
似乎Semantic UI 没有直接理解json 的格式。
我试过很多格式的 json 属性,甚至试图改变一点 html。例如,试图在 select 的底部添加一个空的 <div class="menu">
,希望 Semantic UI 能够填充它,例如:
<div class="ui search selection dropdown select-city">
<input type="hidden" name="city">
<i class="dropdown icon"></i>
<div class="default text">Select City</div>
<div class="menu"></div>
</div>
我正在尝试将属性的格式与 example 中的属性相匹配,例如,使用 "data-value" 属性。
但是也没有用,我在源代码中看到了Semantic UI checks for that,所以没有什么区别。最后,我的问题仍然存在,下拉列表中没有插入任何项目 selection。
如果你不发布你正在使用的代码,我会在这里尝试一下,但是 dropdown
期望数据结果被键入为 { name: "Item 1", value: "value1" }
,如relevant part of the documentation.
如果您有不同的字段名称,那么您可以在设置中提供一个 fields
结构来覆盖这些:
$('.ui.dropdown').dropdown({
fields: { name: "description", value: "data-value" },
apiSettings: {
mockResponse: {
success: true,
results: [
{"description":"Opole","data-value":1},
{"description":"Wrocław","data-value":2},
{"description":"Warszawa","data-value":3},
{"description":"Budapest","data-value":4},
{"description":"Köln","data-value":5}
]
}
}
});
所需的最低 HTML 是:
<div class="ui search selection dropdown">
<div class="text">Search</div>
</div>
或:
<div class="ui search selection dropdown">
<input class="search"></input>
</div>
自动插入空 <div class="menu"></div>
,但需要 <input class="search"></input>
,并且只有在您已经有 <div class="text"></div>
元素时才会自动插入。
但是请注意,我认为下拉菜单行为有问题,它不会加载数据,直到您开始在搜索字段中输入内容,因此只需单击在下拉图标上是不够的。