背景:前端給的layui的后臺(tái)管理框架,而我們后臺(tái)最近都轉(zhuǎn)型用vue
問(wèn)題1:select上的值與vue未綁定。
問(wèn)題2:layui,select未渲染。
問(wèn)題3:渲染時(shí),v-for循環(huán)時(shí)出現(xiàn)undefined
解決思路:未渲染的原因是layui在vue還未渲染完成就開(kāi)始渲染,導(dǎo)致數(shù)據(jù)未獲取到;
無(wú)法綁定的原因是layui自動(dòng)渲染了select,所以根本沒(méi)綁對(duì)地方,應(yīng)該使用layui的lay-filter攔截點(diǎn)擊,并將vue中的值做修改;
undifined的原因不是很明確,解決辦法是不要使用{{}}而用v-html
代碼:
<div class="layui-input-inline inlineBlock type_select">
//由于我的是for循環(huán),所以用隱藏值來(lái)定位
<input type="hidden" v-model="index" />
<select name="interest" lay-filter="interest" >
<option v-for="model,index in moudleTypes" :value="index" v-html="model.name" :selected="moudle.type==model.value"></option>
</select>
</div>
//在vue得mounted方法中使用
mounted: function () {
//當(dāng)vue渲染結(jié)束再渲染layui
this.$nextTick(function () {
initForm();
});
}
function initForm() {
layui.use('form'], function() {
var form = layui.form;
form.render('select');
form.on('select(interest)',function (data) {
vm.moudles[data.elem.parentNode.firstChild.value].type = data.value
});
}