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