W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
準(zhǔn)備工作:
ember g route wrapping-content-in-component-route
ember g component wrapping-content-in-component
有些情況下,你需要定義一個(gè)包裹其他模板提供的數(shù)據(jù)的組件。比如下面的例子:
<h2>{{title}}</h2>
<div class='body'>{{body}}</div>
上述代碼定義了一個(gè)普通的組件。
{{wrapping-content-in-component title=model.title body=model.body}}
調(diào)用組件,傳入兩個(gè)指定名稱的參數(shù),更多有關(guān)組件參數(shù)傳遞問題請(qǐng)看Ember.js 入門指南之二十九屬性傳遞。
下面在route
中增加一些測(cè)試數(shù)據(jù)。
// app/routes/wrapping-content-in-component-route.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return { id: 1, title: 'test title', body: 'this is body ...', author: 'ubuntuvim' };
}
});
如果程序代碼沒寫錯(cuò),界面應(yīng)該會(huì)顯示如下信息。
在上述例子中組件正常顯示出model
回調(diào)中初始化的數(shù)據(jù)。但是如果你定義的組件需要包含自定義的HTML內(nèi)容呢??
除了上述這種簡(jiǎn)單的數(shù)據(jù)傳遞之外,Ember還支持使用block form
(塊方式),換句話說(shuō)你可以直接傳遞一個(gè)模板到組件中,并在組件中使用{{yield}}
助手顯示傳入進(jìn)來(lái)的模板。
為了能使用塊方式傳遞模板到組件中,在調(diào)用組件的時(shí)候必須使用#
開始的方式(兩種調(diào)用方式:{{component-name}}
或者{{#component-name}}……{{/component-name}}
),注意一定要有關(guān)閉標(biāo)簽!
稍加改造前面的例子,這時(shí)候不只是傳遞一個(gè)簡(jiǎn)單的數(shù)據(jù),而是傳入一個(gè)包含HTML標(biāo)簽的簡(jiǎn)單模板。
<h2>{{title}}</h2>
<div class='body'>{{yield}}</div>
注意此時(shí)div
標(biāo)簽內(nèi)使用的是{{yield}}
助手,而不是直接使用{{body}}
。
下面是調(diào)用組件的模板。
{{!wrapping-content-in-component title=model.title body=model.body}}
{{#wrapping-content-in-component title=model.title}}
{{model.body}}
<small>by {{model.author}}</small>
{{/wrapping-content-in-component}}
頁(yè)面加載之后效果如下:
查看頁(yè)面HTML源代碼,可以看到在
到此組件包裹內(nèi)容的知識(shí)點(diǎn)介紹完畢,內(nèi)容很少也比較簡(jiǎn)單!如果有疑問請(qǐng)給我留言或者直接看官方教程。
wrapping-content-in-component
傳入進(jìn)來(lái)的簡(jiǎn)單HTML模板。你可以把{{#wrapping-content-in-component}}……{{/wrapping-content-in-component}}
中間的內(nèi)容當(dāng)做是一個(gè)參數(shù)理解。
博文完整代碼放在Github(博文經(jīng)過多次修改,博文上的代碼與github代碼可能有出入,不過影響不大!),如果你覺得博文對(duì)你有點(diǎn)用,請(qǐng)?jiān)趃ithub項(xiàng)目上給我點(diǎn)個(gè)star
吧。您的肯定對(duì)我來(lái)說(shuō)是最大的動(dòng)力??!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: