首頁 > web前端 > js教程 > 主體

VueJS元件之間透過props互動及驗證的方式

不言
發布: 2018-06-30 17:32:02
原創
1634 人瀏覽過

本篇文章主要介紹了VueJS元件之間透過props互動及驗證的方式,具有一定的參考價值,有興趣的小夥伴們可以參考一下。

props 是父元件用來傳遞資料的一個自訂屬性。父元件的資料需要透過 props 把資料傳給子元件,子元件需要明確地用 props 選項宣告 "prop"。

父元件透過props將資料傳遞給子元件

HTML

#
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<p id="app">
  <child message="hello world!">props传递给子组件</child>
</p>

<script>
// 
Vue.component(&#39;child&#39;, {
 // 声明 props
 props: [&#39;message&#39;],
 // 同样也可以在 vm 实例中像 “this.message” 这样使用
 template: &#39;<h1>{{ message }}</h1>&#39;
})
// 创建根实例
new Vue({
 el: &#39;#app&#39;
})
</script>
</body>
</html>
登入後複製

##效果如圖:

動態props組成資料傳遞

類似於用v-bind 綁定HTML 特性到一個表達式,也可以用v-bind 動態綁定props 的值到父組件的資料中。每當父元件的資料變更時,該變更也會傳導給子元件:

HTML

#

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<p id="app">
  <p>
   <input v-model="parentMsg">
   <br>
   <child v-bind:message="parentMsg"></child>
  </p>
</p>

<script>
// 注册
Vue.component(&#39;child&#39;, {
 // 声明 props
 props: [&#39;message&#39;],
 // 同样也可以在 vm 实例中像 “this.message” 这样使用
 template: &#39;<span>{{ message }}</span>&#39;
})
// 创建根实例
new Vue({
 el: &#39;#app&#39;,
 data: {
  parentMsg: &#39;父组件内容&#39;
 }
})
</script>
</body>
</html>
登入後複製

## 效果如圖:

 v-bind 指令將todo 傳到每個重複的元件中

HTML

##

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<p id="app">
  <ol>
  <todo-item v-for="item in sites" v-bind:todo="item"></todo-item>
   </ol>
</p>

<script>
Vue.component(&#39;todo-item&#39;, {
 props: [&#39;todo&#39;],
 template: &#39;<li>{{ todo.text }}</li>&#39;
})
new Vue({
 el: &#39;#app&#39;,
 data: {
  sites: [
   { text: &#39;Runoob&#39; },
   { text: &#39;Google&#39; },
   { text: &#39;Taobao&#39; }
  ]
 }
})
</script>
</body>
</html>
登入後複製

效果如下:

  • 注意: props 是單向綁定的:當父元件的屬性變化時,將傳導給子元件,但是不會反過來。

  • 元件為props 指定驗證要求

  • props 是一個物件而不是字串陣列時,它包含驗證要求:
  • JS

  • Vue.component(&#39;example&#39;, {
     props: {
      // 基础类型检测 (`null` 意思是任何类型都可以)
      propA: Number,
      // 多种类型
      propB: [String, Number],
      // 必传且是字符串
      propC: {
       type: String,
       required: true
      },
      // 数字,有默认值
      propD: {
       type: Number,
       default: 100
      },
      // 数组/对象的默认值应当由一个工厂函数返回
      propE: {
       type: Object,
       default: function () {
        return { message: &#39;hello&#39; }
       }
      },
      // 自定义验证函数
      propF: {
       validator: function (value) {
        return value > 10
       }
      }
     }
    })
    登入後複製

    type 可以是下面原生建構器:
  • String
  • ##Number
  • Boolean

    Function


    Object

    Array

    type 也可以是一個自訂建構器,使用instanceof 來偵測。
    以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

    相關推薦:

    Vue中封裝input元件的介紹

    #########Vue元件通訊實作的介紹#### ###########Vue2.0 多Tab切換元件的封裝介紹###########################

    以上是VueJS元件之間透過props互動及驗證的方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!