Vue笔记1.1 : 开始

<!-- Vue.js demo 
     https://www.runoob.com/vue2/vue-tutorial.html
 -->

<div id="vue_det"> 
    <p>{{ message }}</p>
    <p>{{details()}}</p>
    <!--双大括号支持js计算 -->
    <p>{{5+5}}</p>
    <p>{{ ok ? 'YES' : 'NO' }}</p>
    <p>{{ message.split('').reverse().join('') }}</p><!-- 反转字符串 -->
    <!-- 和双大括号一样,可以输出 -->
    <p v-html="message"></p>
</div>
<script type="text/javascript">
var data = {//绑定的数据
    message: "菜鸟教程" ,
    ok : true
    //可以添加更多绑定数据
}
var vm = new Vue({
    el: '#vue_det',  // Dom对象ID
    data: data,
    methods: {//绑定的方法
        details: function() {
            return  this.message + " - 学的不仅是技术,更是梦想!";
        }
    }
})

//注意前缀 $
document.write(vm.$data === data) // true
document.write(vm.$el === document.getElementById('vue_det')) // true
</script>

<!----------------------------------------------------->
<!-- https://www.runoob.com/try/try.php?filename=vue2-v-bind
     v-model 绑定 vue 中的 data.use , 复选框选中 use=true , 不选时 use=false
     v-bind  绑定 class , 根据use判断类class1 用还是不用
 -->

<div id="app">
  <label for="r1">修改颜色</label><input type="checkbox" v-model="use" id="r1">
  <br><br>
  <div v-bind:class="{'class1': use}">
    v-bind:class 指令
  </div>
  <!-- v-bind绑定了id , 根据 vue 中的$data.id改变 -->
  <div v-bind:id="'list-' + id">菜鸟教程</div>
</div>
    
<script>
new Vue({
    el: '#app',
    data:{
        use: false ,
        id : 1 
    }
});
</script>

<!----------------------------------------------------->
<!-- 
    指令 :
    v-bind 指令被用来响应地更新 HTML 属性
    v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素
    v-show 指令来根据条件展示元素
    v-for 指令实现循环
    v-on 指令,它用于监听 DOM 事件
    v-model 指令来实现双向数据绑定
        复选框是true,false
        文本框等是文本值
 -->
<div id="app">
    <a v-bind:href="url">菜鸟教程</a>
    <!-- v-bind: 缩写 : -->
    <a :href="url">菜鸟教程</a>
    
    <p v-if="seen">现在你看到我了</p>
    {{#if ok}} <h1>Yes</h1>{{/if}}    <!-- Handlebars 模板 -->
    <!-- if else ; else if 参考 https://www.runoob.com/try/try.php?filename=vue2-v-else-if-->
    <div v-if="Math.random() > 0.5"> Sorry </div><div v-else> Not sorry </div>
    
    <h1 v-show="ok">Hello!</h1>
    
    <!-- 下面是各种循环的例子 -->
    <ol>
      <li v-for="site in sites">{{ site.name }}</li>
    </ol>
    <ul>
      <template v-for="site in sites"><li>{{ site.name }}</li><li>--------------</li></template>
    </ul>
    <!-- 下面三个循环依次获取 值 , 键值 , 序号和键值 -->
    <ul>
      <li v-for="value in object"> {{ value }} </li>
    </ul>
    <ul>
      <li v-for="(value, key) in object"> {{ key }} : {{ value }} </li>
    </ul>
    <ul>
      <li v-for="(value, key, index) in object"> {{ index }}. {{ key }} : {{ value }} </li>
    </ul>
    
    <ul> <!-- 循环整数 -->
    <li v-for="n in 10"> {{ n }} </li>
    </ul>
  
    <a v-on:click="doSomething">
    <!-- v-on:click缩写@ -->
    <a @click="doSomething">
    <!-- 英文句号后缀.用于指出一个指令应该以特殊方式绑定。
         例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():表示取消事件的默认动作 -->
    <form v-on:submit.prevent="onSubmit">
        <button v-on:click="reverseMessage">反转message字符串</button>
    </form>
    
    <p>{{ message }}</p>
    <input v-model="message">
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    ok : true ,
    message: 'Runoob!',
    seen: true ,
    url: 'http://www.runoob.com' ,
    sites: [
      { name: 'Runoob' },
      { name: 'Google' },
      { name: 'Taobao' }
    ],
    object: {
      name: '菜鸟教程',
      url: 'http://www.runoob.com',
      slogan: '学的不仅是技术,更是梦想!'
    }
  },
  methods: {
    doSomething : function(){
        //...
    },
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
</script>



<!----------------------------------------------------->
<!-- 
    过滤器
    以下capitalize实例对输入的字符串第一个字母转为大写
 -->


<div id="app">
  {{ message | capitalize }}
  <div v-bind:id="rawId | formatId"></div>
  <!-- 过滤器可以串联 -->
  {{ message | filterA | filterB }}
  <!-- message 是第一个参数,字符串 'arg1' 将传给过滤器作为第二个参数, arg2 表达式的值将被求值然后传给过滤器作为第三个参数 -->
  {{ message | filterC('arg1', arg2) }}
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
      //arg2 : 'bbb' ,
      message: 'runoob'
  },
  filters: {
    capitalize: function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
    } ,
    filterA : function(value){
        //...
    }
    filterB : function(value){
        //
    },
    filterC : function(value,arg1,arg2){
        //TODO arg2 怎么获取呢 , 待验证
    }
  }
})
</script>

 

posted on 2021-12-16 18:57  hi-gdl  阅读(15)  评论(0编辑  收藏  举报

导航