工作中遇到要动态的加载<ion-tabs></ion-tabs>标签中的<ion-tab>(很奇葩的需求),需求是如果后台返回两个分页,就在<ion-tabs>中插入两个<tab>,如果是一个,就插入一个,在百度上找了很久,都没有类似的文档,进一步证明这需求好奇葩。
首先我是使用下面的方式去做的
<ion-tabs>
<ion-tab *ngFor='let item of items' [root]="item.appfuncname" [tabTitle]="item.text" tabIcon="home" ></ion-tab>
</ion-tabs>
经过这样写,每次打开之后页面都是一片空白,通过html查看,发现后台传来的分页的确是加入到<ion-tabs>中的
但是页面是一片空白。问了公司的前端大神,前端大神说需要给设置selectedindex这个属性,要不然不知道加载的页面,毕竟是小白,按别人的方法放入了selectedindex属性 ,发现并没有什么作用,尴尬了。
通过查看ionic提供的这个组件的源码可以看到
当ion-tabs这个组件存在时,ionic就会取出ion-tab,然后创建相同数量的a标签,并且ionic默认是加载第一个分页的(创建)。
所以解决方法就是在后台数据没回来之前给ion-tabs不显示在页面上。数据回来后再显示,并且此时将ion-tab插入
也就是tabsisvis首先为false,等数据加载回来之后,置为true
此时,成功完成了动态加载,并且页面也不再是一片空白
如有不严谨的地方,请见谅,本人是前端小白,,,,,