前言
- 記錄時間:2022.5.18
- 内容:
- 字典可以實作枚舉關聯,前端怎麼寫去調用呢?
- 我參考company之前項目裡的“聯賽賽事管理”部分,整理如下。
- 主要包含html js的更新。
- 備注:
- 由于記錄時并非邊操作邊記錄,而是抽取往期代碼加上自己的了解去記錄的,是以具體實踐時如果出現問題,歡迎留言告知。
1 html
①标簽顯示
- 使用場景:常用于edit。
- 關鍵代碼:
th:checked="${aaaaaa.status == '1' ? true : false}"
- 解釋:aaaaaa是背景傳過來的map鍵。比如在背景接口edit這個方法中,寫成如下方式,則可以将mmap裡的homeApp資料和ossList資料以對象的方式傳給前端。
@GetMapping("/edit/{id}")
public String edit(@PathVariable("id") Long id, ModelMap mmap)
{
HomeApp homeApp = homeAppService.selectHomeAppById(id);
List<SysOss> ossList = ossService.findByMsgId(id.toString(), FileConstant.HOMEAPPLOGOFILE);
mmap.put("homeApp", homeApp);
mmap.put("ossList", ossList);
return prefix + "/edit";
}
- 解釋:homeApp後面跟着的status,是homeApp這個對象擁有的一個實體類屬性。
<form class="form-horizontal m" id="form-homeapp-edit" th:object="${homeApp}">
<div class="form-group">
<label class="col-sm-3 control-label">是否是首頁顯示:</label>
<div class="col-sm-8">
<label class="toggle-switch switch-solid">
<input type="checkbox" id="status" th:checked="${homeApp.status == '1' ? true : false}">
<span></span>
</label>
</div>
</div>
</form>
②下拉清單
- 關鍵代碼:
th:with="type=${@dict.getType('bbbbbb')}"
- 解釋:bbbbbb是建立字典時,設定的字典類型。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iZ4UzNjNWOxYTZiZWZ1AjNmljM1Q2Y5QWZiRTY5UGN08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 解釋:dict.dictLabel和dict.dictValue是RuoYi架構自己有的,不需要更改;下方的type對應着上方的type,同名即可。
<li>
<p>賽事項目:</p>
<select name="eventItem" th:with="type=${@dict.getType('event_item')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
2 js
- 用于場景:常用于list。背景顯示清單時,資料庫中存放的是諸如123等類别編号,但是背景頁面需要顯示各個編号對應的具體描述。
- 關鍵代碼:
定義好之後,需要再在清單title處引用。[[${@dict.getType('xxxxxx')}]];
- 解釋:
- xxxxxx代表在背景設定字典時的代号。
- field是對應上文html中name的屬性值,title是清單顯示時的屬性列标題,formatter是對資料的操作。
- 複用時,可以将以下涉及event的地方更變為自己的内容,其餘的按照模闆即可。
<script th:inline="javascript">
var eventItemDatas = [[${@dict.getType('event_item')}]];
{
field : 'eventItem',
title : '賽事項目',
formatter: function(value, row, index) {
return $.table.selectDictLabel(eventItemDatas, value);
}
}
</script>