vueでは簡単なtodolist機能、todolistコンポーネントの分割、todolistの削除機能を実現

4346 ワード

  • 単純todolist機能の実現
  • ユーザがコミットボタンをクリックすると、inputボックスの内容が下のリストに表示され、リストの内容が空になります. 
    
        
    • {{item}}
    new Vue({ el:"#root", data:{ inputValue:'', list:[] }, methods:{ submit:function(){ this.list.push(this.inputValue); this.inputValue='' } } })

    「input」入力ボックスと「inputValue」データの双方向バインド
    clickイベントでは、「inputValue」の内容が「list」に追加されます.
    リストにデータを追加するpush()this.list.pust(this.inputValue)
    「リスト」を追加するたびに、inputコンテンツを空にします.
  • todolistコンポーネント分割
  • Vue.componentはグローバルコンポーネントであり、vueが提供するコンポーネントの作成方法である.テンプレートを書くことができます:template
  • コンポーネントを作成した後、直接使用できます.たとえば作成されたコンポーネントの名前が'todo-item'であれば、
  • を使用できます.
    Vue.component('todo-item',{ template:'<li>item<li>' }) new Vue({ el:"root" })
  • ローカルコンポーネントvar TodoItem={}ここには一部のコード
  • しか書かれていません.
    var TodoItem={ template:'<li>item<li>' } new Vue({ el:"root", components:{ 'todo-item':TodoItem } })
  • 他のvueでこのローカルコンポーネントを使用するには、vueにそのローカルコンポーネントを登録する必要があります
  • .
  • 最上位のtodolist機能をコンポーネントで実現するには、contentとprops
  • でパラメータの伝達と受信が必要である.
  • 
        
    Vue.component('todo-item',{ props:['content'], template:'<li>{{content}}<li>' }) new Vue({ el:"#root", data:{ inputValue:'', list:[] }, methods:{ submit:function(){ this.list.push(this.inputValue) this.inputValue=' ' } } })
     
  • ここではcontentでitemの値を渡し、propsでcontentの値を受信します.データの転送機能を実現する
  • todolistの削除機能
  • 上のコードを続け、listデータをクリックするとlistの削除機能
  • を実現する
  • まず論理を撫でてみましょう.作成された最外層の大コンポーネント/インスタンスには小さなコンポーネントtodoitemが使用されています.最外層の大コンポーネントは親コンポーネントであり、中の小コンポーネントはサブコンポーネントであると考えられます.
  • では、親コンポーネントで属性の形式でサブコンポーネントに特定のコンテンツを渡し、サブコンポーネントが親コンポーネントから渡されたコンテンツを受信し、サブコンポーネントのテンプレートに表示します.
  • サブアセンブリのデータの削除を実現するには、親アセンブリの対応するデータを削除する必要があります.サブコンポーネントのデータをクリックすると、サブコンポーネントと親コンポーネントとの通信を実現し、親コンポーネントで対応するデータを削除する操作を行います.
  • 
        
    Vue.component('todo-item',{ props:['content','index'], template:'<li @clicl="handleClick">{{content}}<li>', methods:{ handleClick:function(){ this.$emit('delete',this.index) } } }) new Vue({ el:"#root", data:{ inputValue='', list=[] }, methods:{ submit:function(){ this.list.push(this.inputValue) this.inputValue=' ' }, handleDelete:function(index){ this.list.splice(index,1) } } })