vue.js--组件&自定义指令&路由

组件

组件可以扩展html元素,封装可重用的代码。
组建系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:


vue.js--组件&自定义指令&路由_第1张图片
image.png

注册一个全局组件语法格式如下:

Vue.component(tagName, options)

tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:


全局组件

所有实例都能用全局组件。
全局组件实例:
注册一个简单的全局组件 runoob,并使用它:

局部组件

我们也可以在实例选项中注册局部组件,这样组件只能在这个实例中使用:
局部组件实例
注册一个简单的局部组件 runoob,并使用它:

Prop

prop 是父组件用来传递数据的一个自定义属性。
父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop":
Prop 实例:

vue.js--组件&自定义指令&路由_第2张图片
image.png

动态 Prop

类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件:
Prop 实例:


以下实例中将 v-bind 指令将 todo 传到每一个重复的组件中:
Prop 实例:

vue.js--组件&自定义指令&路由_第3张图片
image.png
prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。

Prop 验证

组件可以为 props 指定验证要求。
prop 是一个对象而不是字符串数组时,它包含验证要求:

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

type 可以是下面原生构造器:

String
Number
Boolean
Function
Object
Array

type 也可以是一个自定义构造器,使用 instanceof 检测。

Vue.js 自定义指令

除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。
下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点:
实例:

页面载入时,input 元素自动获取焦点:

我们也可以在实例使用 directives 选项来注册局部指令,这样指令只能在这个实例中使用:
实例:

页面载入时,input 元素自动获取焦点:

你可能感兴趣的:(vue.js--组件&自定义指令&路由)