1. 程式人生 > 其它 ><三>computed 和事件的繫結

<三>computed 和事件的繫結

1、計算屬性computed和methods 的區別在於computed 優先使用快取,methods實時更新,如果message變更,其他兩個值也會變更。

 <body>
      <div id="app">
        <p>原始字串: {{ message }}</p>
        <p>計算後反轉字串: {{ reversedMessage1() }}</p>
        <p>計算後反轉字串: {{ reversedMessage }}</p>
        
      </div>
    <script src="
vue.js"></script> <script> var app = new Vue({ el: '#app', data: { message: 'Runoob!' }, computed: { reversedMessage: function () {
return this.message.split('').reverse().join(''); } }, methods:{ reversedMessage1: function () { return this.message.split('').reverse().join(''
); } } }) </script>

2、上面的例子是反轉欄位/方法依賴message,所以message一變更,其他兩個也會變更。那如果反過來呢,那就要用到setter了。

 <body>
      <div id="app">      
          <div>{{ hello }}</div> 
          <div>{{ vu }}</div> 
      </div>
    <script src="vue.js"></script>
    <script>
      var app = new Vue({
                          el: '#app',
                          data: {
                            hello: '',
                            vu:''
                          },
                          computed: {                        
                            fullUrl:{
                              get: function () {                                               
                                return this.hello+' '+this.vu;
                              },
                              set:function(newvalue){
                                var str = newvalue.split(' ');
                                this.hello = str[0];
                                this.vu = str[str.length - 1]
                              }                                                     
                          }     
                        }                   
                    });
      app.fullUrl='hello vue';
    </script>

3、v-on事件繫結

    <body>
      <div id="app">      
        <button v-on:click="showname('vue')">{{name}} {{time}}</button>
      </div>
    <script src="vue.js"></script>
    <script>
      var app = new Vue({
                          el: '#app',
                          data: {
                            name: '',
                            time:0
                          },
                          methods: {                        
                           showname:function(message){
                               this.name=message;
                               this.time=this.time+1;
                           }
                        }                   
                    });
   </script>

按鍵修飾符 v-on:keyup.13 捕捉keycode為13的按鍵,vue提供了一些常用的按鍵別名

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 縮寫語法 -->
<input @keyup.enter="submit">

.enter  
.tab    
.delete 
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta