Vue.js組件學習

組件可以擴展HTML元素,封裝可重用的HTML代碼,我們可以將組件看作自定義的HTML元素。組件系統提供了一種抽象,讓我們可以使用獨立可復用的小組件來構建大型應用。

一個簡單組件例子(全局注冊)

<!DOCTYPE html>
<html><body><div id="app"><!-- 3. #app是Vue實例掛載的元素,應該在掛載元素范圍內使用組件--><the-component></the-component></div></body><script src="js/vue.js"></script><script>// 1.創建一個組件構造器var myComponent = Vue.extend({template: '<div> my first component!</div>'})// 2.注冊組件,并指定組件的標簽,組件的HTML標簽為<the-component> 
        Vue.component('the-component', myComponent)new Vue({el: '#app'});</script>
</html>

運行結果:

分析:

1.Vue.extent() 是Vue構造器的擴展,調用Vue.extend()創建的是一個組件構造器,而不是一個具體的組件實例。它里面的選項對象的template屬性用于定義組件要渲染的HTML。

2.Vue.component() 注冊組件時,需要提供2個參數,第一個參數是組件的標簽,第二個是組件構造器。它調用了組件構造器myComponent,創建一個組件實例。

3.組件應該掛載在某個Vue實例下,

new Vue({el: '#app'
});

這段代碼必須要有,表示掛載在#app元素上,否則不會生效。

局部注冊:

  <script>// 1.創建一個組件構造器var myComponent = Vue.extend({template: '<div> my first2 component!</div>'})new Vue({el: '#app',components: {// 2. 將myComponent組件注冊到Vue實例下'the-component' : myComponent}});</script>

父組件和子組件

可以在組件中定義并使用其他組件,構成父子組件關系。

例子:(注意版本用vue.js 1.0的,2.0版本,button都出現不了

<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body><!-- 子組件模板 --><template id="child-template"><input v-model="msg"><button v-on:click="notify">Dispatch Event</button></template><!-- 父組件模板 --><div id="events-example"><p>Messages: {{ messages | json }}</p><child></child></div></body><script src="http://cdn.bootcss.com/vue/1.0.0-csp/vue.js"></script><script>// 注冊子組件// 將當前消息派發出去
  Vue.component('child', {template: '#child-template',data: function () {return { msg: 'hello' }},methods: {notify: function () {if (this.msg.trim()) {this.$dispatch('child-msg', this.msg)this.msg = ''}}}})// 初始化父組件// 將收到消息時將事件推入一個數組var parent = new Vue({el: '#events-example',data: {messages: []},// 在創建實例時 `events` 選項簡單地調用 `$on`
    events: {'child-msg': function (msg) {// 事件回調內的 `this` 自動綁定到注冊它的實例上this.messages.push(msg)}}})</script>
</html>

運行結果:

props示例

<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body><template id="myComponent"><table><tr><th colspan="2">子組件數據</th></tr><tr><td>myname</td><td v-text="myName"></td></tr><tr><td>myage</td><td v-text="myAge"></td></tr></table></template><div id="app"><my-component v-bind:my-name="name" v-bind:my-age="age"></my-component></div></body><script src="http://cdn.bootcss.com/vue/1.0.0-csp/vue.js"></script><script>var vm = new Vue({el: '#app',data: {name: 'wangjuan',age: 24},components: {'my-component': {template: '#myComponent',props: ['myName', 'myAge']}}});</script>
</html>

結果為:

prop雙向綁定

<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body><template id="myComponent"><table><tr><th colspan="3">子組件數據</th></tr><tr><td>myname:</td><td v-text="myName"></td><td><input type="text" v-model="myName" /></td></tr><tr><td>myage:</td><td v-text="myAge"></td><td><input type="text" v-model="myAge" /></td></tr></table></template><div id="app"><table><tr><th colspan="3">父組件數據</th></tr><tr><td>name:</td><td>{{ name }}</td><td><input type="text" v-model="name" /></td></tr><tr><td>age:</td><td>{{ age }}</td><td><input type="text" v-model="age" /></td></tr></table><my-component v-bind:my-name="name" v-bind:my-age="age"></my-component></div></body><script src="http://cdn.bootcss.com/vue/2.0.0-rc.8/vue.js"></script><script>var vm = new Vue({el: '#app',data: {name: 'wangjuan',age: 24},components: {'my-component': {template: '#myComponent',props: ['myName', 'myAge']}}});</script>
</html>

結果:

prop默認是單向綁定,不過這里我感覺默認是雙向綁定,不知道哪里出問題了。。。

使用.sync或.once 綁定修飾符顯式地強制雙向或單次綁定。

子組件可以用this.$parent訪問它的父組件。根實例的后代可以用this.$root訪問它。父組件有一個數組this.$children,包含它所有的子元素。

?

轉載于:https://www.cnblogs.com/wj204/p/5923045.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373798.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Winform MD5

1&#xff1a;MD5 http://www.cmd5.com/ 字節數組----字符串 //將字節數組中每個元素按照指定的編碼格式解析成字符串//直接將數組ToString()//將字節數組中的每個元素ToString() //ToString("Params") ToString("x") //可以將十進制字符串轉換為16進制字符…

HTML元素顯示與隱藏

在WEB開發中&#xff0c;前臺HTML中經常需要控制元素的隱藏與顯示&#xff0c;我們最為最常見是二級導航欄&#xff08;通過鼠標的移動來觸發onmouseover&#xff0c;onmouseout事件來實現二級菜單的顯示與隱藏&#xff09;二級菜單的顯示與隱藏。 然而控制元素的影響與顯示有…

書評:JavaFX 2.0:示例介紹

盡管Oracle在JavaOne 2010和JavaOne 2011上對JavaFX的更改使我從懷疑論者轉變為對JavaFX的信奉者 &#xff0c;但是JavaFX愿景的轉變并非沒有缺點 。 特別是&#xff0c;JavaFX圖書市場一直很棘手&#xff0c;因為幾乎所有可用的JavaFX圖書都與1.x版本有關。 在這篇文章中&…

腦子越來越不好使,文字越來越像馱shi

沒辦法&#xff0c;還是記下來。。。轉載于:https://www.cnblogs.com/thorlet/p/5926595.html

python機制_python異常機制個人理解(參考網上資料)

當你的程序中出現異常情況時就需要異常處理。比如當你打開一個不存在的文件時。當你的程序中有一些無效的語句時&#xff0c;Python會提示你有錯誤存在。下面是一個拼寫錯誤的例子&#xff0c;print寫成了Print。Python是大小寫敏感的&#xff0c;因此Python將引發一個錯誤&…

NYOJ 24 素數距離問題

素數距離問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;2描述 現在給出你一些數&#xff0c;要求你寫出一個程序&#xff0c;輸出這些整數相鄰最近的素數&#xff0c;并輸出其相距長度。如果左右有等距離長度素數&#xff0c;則輸出左側的…

C#控件大小隨窗體大小等比例變化

相信很多博友在開發初次接觸學習C# winForm時&#xff0c;當窗體大小變化時&#xff0c;窗體內的控件并沒有隨著窗體的變化而變化&#xff0c;最近因為一個項目工程的原因&#xff0c;也需要解決這個問題。通過查閱和學習&#xff0c;這個問題得到了解決&#xff0c;或許不是很…

Google Appengine登臺服務器操作方法

Google的App Engine開箱即用&#xff0c;支持版本化部署。 您可以非常輕松地在各修訂版之間來回切換&#xff0c;這是在上線之前正確測試應用程序的一項很棒的功能。 有一個主要問題&#xff1a;應用程序的所有版本共享同一數據存儲。 因此&#xff0c;如果要遷移數據&#xff…

下 面 這 條 語 句 一 共 創 建 了 多 少 個 對 象 : String s=a+b+c+d;

javac 編譯可以對字符串常量直接相加的表達式進行優化&#xff0c; 不必要等到運行期去進行加法運算處理&#xff0c; 而是在編譯時去掉其中的加號&#xff0c; 直接將其編譯成一個這些常量相連的結果。題目中的第一行代碼被編譯器在編譯時優化后&#xff0c; 相當于直接定義了…

公共樣式_設計干貨 | 園路鋪裝的100種樣式,保存收好

Part 1園路的形式主干道&#xff1a;聯系全園&#xff0c;必須考慮通行、生產、救護、消防、游覽的需要。次干道&#xff1a;溝通各景點、建筑&#xff0c;通輕型車輛。休閑小徑、健康步道&#xff1a;健康步道是近年來最為流行的足底按摩健身方式。通過行走卵石路上按摩足底穴…

22個所見即所得在線 Web 編輯器

新聞來源:sixrevisions.com我們曾介紹過 10 個基于 JavaScript 的 WYSIWYG&#xff08;所見即所得&#xff09; 編輯器&#xff0c;這些 Web 編輯器可以在線編輯和處理富 Web 內容&#xff0c;包括格式文本&#xff0c;表格&#xff0c;圖片&#xff0c;媒體&#xff0c;鏈接等…

配置阿里云作為yum 源

第一步&#xff1a;下載aliyum 的yum源配置文件。 http://mirrors.aliyun.com/repo/ 第二步&#xff1a;把下載到的repo文件復制到/etc/yum.repo.d/目錄下。 ----------------------------------------------------下面是本地yum源的一個例子 [base_extra]namebase & extra…

Spring 3,Spring Web Services 2和LDAP安全

今年的開局很好&#xff0c;其中另一個“截止日期不會改變” /“跳過所有繁文tape節” / “狂野西部”類型的項目中&#xff0c;我必須弄清楚并使用相對而言實現一些功能。新的庫和技術需要進行更改&#xff0c;Spring 3并不是新增功能&#xff0c;但是在Java 5&#xff0c;web…

vue 日期選擇器默認時間_vue-datepicker

vue-datepicker基于 Vue 的日期/時間選擇組件。安裝NodeJS 環境 (commonjs)npm i hyjiacan/vue-datepicker或者yarn add hyjiacan/vue-datepicker可以通過以下方式獲取最新的代碼git clone https://github.com/hyjiacan/vue-datepicker.git源碼倉庫瀏覽器環境 (umd)Since 2.4.0…

easyUI validate函數【總結篇-部分轉】

以下是自己總結和修改別人的帖子和資源整理出來的一些常用驗證函數&#xff0c;備用&#xff0c;交流。 <body>郵箱驗證&#xff1a;<input type"text" validtype"email" required"true" missingMessage"不能為空" invalidMe…

CSDN挑戰編程——《金色十月線上編程比賽第一題:小女孩數數》

金色十月線上編程比賽第一題&#xff1a;小女孩數數 題目詳情: 【金色十月線上編程比賽規則】 一個小女孩正在用左手手指數數&#xff0c;從1數到n。她從拇指算作1開始數起&#xff0c;然后&#xff0c;食指為2&#xff0c;中指為3&#xff0c;無名指為4&#xff0c;小指為5。…

ubuntu 安裝完成后的工作

以安裝 ubuntu 15.10 為例 1. 備份并更改源 1 cd /etc/apt 2 sudo cp source.list source.list.bak 3 sudo vi source.list 刪除所有內容并增加其他源&#xff08;用vi刪除所有內容&#xff0c;命令行下gg移動光標至文件頭&#xff0c;dG刪除光標后所有內容&#xff09; 阿里云…

Morphia和MongoDB:不斷發展的文檔結構

在上一篇有關Morphia的文章中 &#xff0c;我介紹了一些典型用法&#xff0c;并提到了一些已知問題的警告和解決方法。 我展示了使用Morphia多么容易&#xff0c;以及它與Java世界的交互方式。 為了跟進該帖子&#xff0c;我將討論如何處理一些現實生活中的需求&#xff1a;處理…

angular 點菜_Vue2與Angular5實現無人點餐、無人收銀系統項目實戰視頻教程【組合套餐】(大地)...

Vue2實現無人點餐、無人收銀系統項目實戰視頻教程詳情地址&#xff1a;Angular5實現無人點餐、無人收銀系統項目實戰視頻教程詳情地址&#xff1a;教程介紹&#xff1a;Vue2與Angular5實現無人點餐、無人收銀系統項目實戰視頻教程【組合套餐】是由大地老師傾情錄制的最新Vue2與…

CSDN挑戰編程——《金色十月線上編程比賽第二題:解密》

金色十月線上編程比賽第二題&#xff1a;解密 題目詳情: 小強是一名學生&#xff0c; 同時他也是一個黑客。 考試結束后不久&#xff0c;他驚訝的發現自己的高等數學科目居然掛了&#xff0c;于是他果斷入侵了學校教務部網站。在入侵的過程中&#xff0c;他發現了與成績相關的…