簡単に理解するために - クイックスタートヴュー - 1

  • オリジナルデザインパターン:MVP

    M 模型   数据
    V 视图  触发事件
    P 控制器  负责业务逻辑
  • 新デザインパターン:MVVM

    M层        script 主要M层开发   面向数据编程
    V层        html
    VM层       进行逻辑(自动改变)
  • VM層?
    • 仮想DOM ???
    • プロキシモードを定義しますか?

プロジェクトのコンポーネント

  • 各コンポーネントは、ページの領域です。

1.グローバル・コンポーネント

    Vue.component('todo-item',{
        props:['content'],
        template:"<li>{{content}}</li>"
    });

2.サブアセンブリ

var TodoItem = {
      props:['content'],
      template:"<li>{{content}}</li>"
    };
  • 地方議会は、登録する必要があります
// 在实例中进行注册
var vm = new Vue({
    el:"#app",
    // 局部组件注册
        components:{
            TodoItem:TodoItem
        },
})

親コンポーネントサブアセンブリに3つのパス値

  • V-結合によって親成分:質量の値をバインドするXXX =「XXX」は、親コンポーネント値が受け入れるようになった支柱によってサブアセンブリによって定義されます

    v-bind:子组件props接收要穿值的名字=父组件变量的名字

4サブアセンブリ親成分値の転送に

  • の値を変更するには、イベントを聞くことによって拡散された親コンポーネント、親コンポーネントをトリガすること$ EMITに、サブアセンブリによってイベント
// 子组件绑定要触发事件 @click='handelItemClick'
handelItemClick:function () {
                this.$emit('delete',this.index)
          }
//通过$emit触发事件,并传值。


//父组件在标签上监听该delete事件,并绑定处理方法
@delete="handelItemDelete"

//父组件定义handelItemDelete,将传来的数据,在当前实例中修改
handelItemDelete:function (indexvalue) {
            this.list.splice(indexvalue,1)
}
  • V-バインド:V-上:に等しいは以下に等しいです。

5成分todolistの

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="./vue.js"></script>
<body>
<div id="app">
    <input type="text" v-model="inputValue">
    <button @click="handlebtnClisk">提交</button>
    <ul>
        <todo-item v-for="(item,index) in list"
                   v-bind:index="index"
                   v-bind:content="item"
                   @delete="handelItemDelete"

        >{{item}}</todo-item>
    </ul>
</div>
</body>
<script>
    // 全局组件
    // Vue.component('todo-item',{
    //     props:['content'],
    //     template:"<li>{{content}}</li>"
    // });
    // 局部组件
    var TodoItem = {
      props:['content','index'],
      template:"<li @click='handelItemClick'>{{content}}</li>",
      methods:{
          handelItemClick:function () {
                this.$emit('delete',this.index)
          }
      }
    };




    var vm = new Vue({
        // el限制一个vue实例的管理范围。
        el:"#app",
        // 局部组件注册
        components:{
            TodoItem:TodoItem
        },
        data:{
            list:[],
            inputValue:""
        },
        methods:{
            handlebtnClisk:function () {
                this.list.push(this.inputValue);
                this.inputValue = ""
            },
            handelItemDelete:function (indexvalue) {
                this.list.splice(indexvalue,1)
            }
        }
    });

</script>
</html>

おすすめ

転載: www.cnblogs.com/xujunkai/p/12229974.html