初始化 bootstrap-select 时 Vue 循环不工作
Vue loop not working when bootstrap-select is initialized
默认情况下,我的 select 下拉菜单中有一个循环,它可以正确显示数据。
<select name="" id="input" class="form-control selectteam">
<option value="" disabled="" selected="">Filter by team</option>
<option v-for="(team, index) in nblTeams" :value="team.clubName">{{team.clubName}}</option>
</select>
但是当我按照下面的代码在安装的方法中添加 $('.selectteam').selectpicker(); 时
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
}
});
$('.selectteam').selectpicker();
}
它还没有显示团队列表。顺便说一句,我正在使用 bootstrap-select - Silvio Moreto
您尝试过使用 nextTick 吗?在 vue 时钟的下一个滴答声中初始化 bootstrapselect
例子
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
}
});
this.$nextTick(function(){
$('.selectteam').selectpicker();
});
}
编辑:
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
this.$nextTick(function(){
$('.selectteam').selectpicker();
});
}
});
}
不太确定我所做的是否能很好地解决我的问题。添加了 setTimeout 方法并且有效。
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
if(typeof(this.nblTeams) == 'object'){
setTimeout(() => {
$('.team').selectpicker();
}, 500);
}
}
});
我有类似的问题,我通过添加 setTimeout 解决了这个问题,如下所示:
setTimeout(function () {
$('.select-reviewer').selectpicker();
}, 10);
或者这个,如果你已经初始化了 selectpicker:
setTimeout(function () {
$('.select-reviewer').selectpicker('refresh');
}, 10);
我还应该提到 selected 选项。 Bootstrap-select 从初始化或刷新时删除任何 'selected' 属性 这就是为什么这里是防止这种情况的代码:
setTimeout(function () {
$('.select-reviewer').selectpicker('val', $('.select-reviewer option:selected').val());
}, delay);
正如您从上面的代码中看到的,我们只是在初始化时将值设置在 bootstrap-select 中。
默认情况下,我的 select 下拉菜单中有一个循环,它可以正确显示数据。
<select name="" id="input" class="form-control selectteam">
<option value="" disabled="" selected="">Filter by team</option>
<option v-for="(team, index) in nblTeams" :value="team.clubName">{{team.clubName}}</option>
</select>
但是当我按照下面的代码在安装的方法中添加 $('.selectteam').selectpicker(); 时
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
}
});
$('.selectteam').selectpicker();
}
它还没有显示团队列表。顺便说一句,我正在使用 bootstrap-select - Silvio Moreto
您尝试过使用 nextTick 吗?在 vue 时钟的下一个滴答声中初始化 bootstrapselect
例子
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
}
});
this.$nextTick(function(){
$('.selectteam').selectpicker();
});
}
编辑:
mounted: function() {
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
this.$nextTick(function(){
$('.selectteam').selectpicker();
});
}
});
}
不太确定我所做的是否能很好地解决我的问题。添加了 setTimeout 方法并且有效。
this.getCurrentSeasonTeams().then( (response) => {
if( response.status == 200 && typeof(response.data) == 'object' ) {
this.nblTeams = response.data;
if(typeof(this.nblTeams) == 'object'){
setTimeout(() => {
$('.team').selectpicker();
}, 500);
}
}
});
我有类似的问题,我通过添加 setTimeout 解决了这个问题,如下所示:
setTimeout(function () {
$('.select-reviewer').selectpicker();
}, 10);
或者这个,如果你已经初始化了 selectpicker:
setTimeout(function () {
$('.select-reviewer').selectpicker('refresh');
}, 10);
我还应该提到 selected 选项。 Bootstrap-select 从初始化或刷新时删除任何 'selected' 属性 这就是为什么这里是防止这种情况的代码:
setTimeout(function () {
$('.select-reviewer').selectpicker('val', $('.select-reviewer option:selected').val());
}, delay);
正如您从上面的代码中看到的,我们只是在初始化时将值设置在 bootstrap-select 中。