成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

來扯點(diǎn)ionic3[4] 結(jié)構(gòu)型指令和列表渲染

lowett / 1027人閱讀

摘要:雷神上映已經(jīng)一周,但因?yàn)楦鞣N原因還沒來得去送票房,有多年不見的班納和洛基娘娘,期待他們在諸神黃昏和明年無限戰(zhàn)爭中的表現(xiàn)。至此,準(zhǔn)備就緒,開始了解第一個指令。參考文檔結(jié)構(gòu)型指令

《雷神3》上映已經(jīng)一周,但因?yàn)楦鞣N原因還沒來得去送票房,有多年不見的班納和洛基娘娘,期待他們在《諸神黃昏》和明年《無限戰(zhàn)爭》中的表現(xiàn)。

之前在學(xué)習(xí)建立頁面的時候已經(jīng)體驗(yàn)過了模板插值(把變量展示在頁面中),這一節(jié)便來挖掘更多的模板語法。

準(zhǔn)備工作

方便起見,我們這次處理項目中的默認(rèn)頁面 ContactPage,在 contact.ts 中建立一個簡單的數(shù)組成員。

在 contact.html 中清空 ion-content 標(biāo)簽的多余內(nèi)容。

至此,準(zhǔn)備就緒,開始了解第一個指令。

重復(fù)性指令 ngFor

ngFor指令的作用是,將批量的數(shù)據(jù)(數(shù)組)結(jié)合HTML元素添加到頁面DOM中,它的語法參照了ES6中的 for...of 語句:

for (let i of [1,2,3,4,5,6]) { ... }
基本的使用

ngFor指令基本語法:

*ngFor="let value of [1,2,3,4,5,6]"

使用時注意不要遺漏星號(*)。

嘗試在 contact.html 中輸出 data 數(shù)組:


  
{{item}}

模板中渲染的數(shù)據(jù)和頁面類中的屬性成員是緊密綁定的,當(dāng)屬性發(fā)生變化,頁面也會當(dāng)即作出相應(yīng):

ionViewDidEnter(){
      setInterval(()=>{
          this.data.push(this.data.length + 1);
      },500)
  }

在上面的代碼中,使用鉤子添加了一個間隔定時器,每半秒鐘向 data 數(shù)組中添加一個元素(*在ionic3中,如果沒有特殊的必要,請使用箭頭函數(shù)代替?zhèn)鹘y(tǒng)的
function 聲明*)。

可見,在頁面中,每半秒鐘也會相應(yīng)增加一個新的條目。

對象的渲染

在實(shí)際的開發(fā)中,我們更常會去處理一個對象數(shù)組,這時候我們通過點(diǎn)運(yùn)算符(.) 輸出數(shù)組的屬性:

    data:any = [
        {name:"托尼·史塔克", birthYear:1970, gender:1, description:"鋼鐵俠"},
        {name:"史蒂夫·羅杰斯", birthYear:1920, gender:1, description:"美國隊長"},
        {name:"娜塔莎羅·曼諾夫", birthYear:1928, gender:0, description:"黑寡婦"},
        {name:"索爾", birthYear:-5555,gender:1, description:"雷神"},
        {name:"克林頓·巴頓", birthYear:1974, gender:1, description:"鷹眼"},
        {name:"布魯斯·班納", birthYear:1975, gender:1, description:"綠巨人浩克"}
    ]; 

模板渲染:


  
{{item.name}}

ionic的列表渲染 基本使用

在APP的開發(fā)中,對列表條目的渲染并非是通過 div 來承載的,ionic 提供了列表專用的標(biāo)簽 ion-list


  

其中 ion-list 是列表容器, ion-item 是列表中的一個條目,當(dāng)把 ion-item 和 ngFor 指令結(jié)合使用,就可以渲染出一個多條目的列表:


  
    {{item.name}}
  

更復(fù)雜一些的列表

ion-item 里可以通過不同元素的組織讓列表承載更多信息


  

{{item.name}}

{{item.description}}

此外,ionic還提供一個指令 item-end 將指定的元素渲染在條目的尾部:


      

{{item.name}}

{{item.description}}

{{item.gender?"男":"女"}}, {{2017 - item.birthYear}} 歲

注:漫威電影宇宙中超級英雄的出生年份不可考 :)

此處除了點(diǎn)運(yùn)算符(.) 輸出對象的屬性,還使用了一個計算表達(dá)式和一個條件表達(dá)式,這些都是我們常見的用法。

加入頭像

利用 ion-avatar 標(biāo)簽和 item-start 指令渲染一個有頭像的列表:

ion-avatar標(biāo)簽的默認(rèn)樣式會自動對圖片進(jìn)行縮放和截取,呈現(xiàn)出如圖所示的圓形效果,此外也有一種可以展示方形圖片的 ion-thumbnail 標(biāo)簽(縮略圖標(biāo)簽),你也可以通過CSS來修改頭像的樣式。
注:我事先已經(jīng)準(zhǔn)備好了圖片素材并將每位hero的avatar屬性寫進(jìn)了data中。

有條件地渲染:ngIf 指令

除了 ngFor ,還有一個非常常用的指令 ngIf ,通過一個表達(dá)式來判斷元素是否會被添加到模板中。這一指令同樣也是動態(tài)的:當(dāng)表達(dá)式的值變?yōu)檎妫乇銜砑?;?dāng)表達(dá)式的值變?yōu)榧伲貢哪0嬷斜灰瞥?/p>

*ngIf="isActive"

嘗試用 ngIf 指令來曬先男性英雄


    
      
        
          
        
        

{{item.name}}

{{item.description}}

{{item.gender?"男":"女"}}, {{2017 - item.birthYear}} 歲

這兒要說明的是,在angular中,__ngFor 和 ngIf 不能放置在同一個標(biāo)簽上__(Vue之類的框架則可以),因此在 ion-item 外加上一個“虛擬”的標(biāo)簽 ng-container, 它自身不會被渲染到DOM中,只會渲染它包裹的內(nèi)容(類似Vue中的 template 標(biāo)簽)。因此在沒有 ngIf 的情況下,把 ngFor 指令加在 ion-item 上和加在外層的 ng-container 標(biāo)簽上效果是等同的;__而在有 ngIf 指令的情況下,可以通過 ng-container標(biāo)簽避免兩個指令的沖突__。

參考文檔

Angular結(jié)構(gòu)型指令

Ionic List API Docs

Ionic Item API Docs

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26136.html

相關(guān)文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<