vue笔记1

1.安装或引入vue的方式:

a.直接下载并用 <script> 标签引入

b. <script>在线引入:

生产版:<script src="https://unpkg.com/vue/dist/vue.min.js"></script>

调试版:<script src="https://unpkg.com/vue/dist/vue.js"></script>

c.在用 Vue 构建大型应用时推荐使用 NPM 安装。NPM 能很好地和诸如 webpack 或 Browserify 模块打包器配合使用。同时 Vue 也提供配套工具来开发单文件组件。

# 最新稳定版
$ npm install vue

 

2.vue简单例子:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <p>{{ message }}</p>
</div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  }
})
</script>
</body>
</html>

el: '#app'表示把vue实例挂载到id为app的元素中

 双大括号返回表达式的值或属性的值,单个大括号用于在bind时做逻辑判断, 比如

<div v-bind:class="{class1:flag}">{{content+"zy"}}</div>

 

 

3.

除了文本插值,我们还可以像这样来绑定元素属性:

<div id="app-2">
<span v-bind:title="message">
鼠标悬停几秒钟查看此处动态绑定的提示信息!
</span>
</div>
var app2 = new Vue({
el: '#app-2',
data: {
message: '页面加载于 ' + new Date().toLocaleString()
}
})
鼠标悬停几秒钟查看此处动态绑定的提示信息!

这里我们遇到了一点新东西。你看到的 v-bind 特性被称为指令。指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性。可能你已经猜到了,它们会在渲染的 DOM 上应用特殊的响应式行为。在这里,该指令的意思是:“将这个元素节点的 title 属性和 Vue 实例的 message 属性保持一致”。

如果你再次打开浏览器的 JavaScript 控制台,输入 app2.message = '新消息',就会再一次看到这个绑定了 title 特性的 HTML 已经进行了更新。

元素属性不需要{{}},直接引用值

 <tr v-for="item in taskitems" onclick="onselrow(this);">

  <td bgcolor="#FFFFFF" v-bind:title=item.source>{{item.source}}</td>

</tr>

 

4.v-if

们不仅可以把数据绑定到 DOM 文本或属性,还可以绑定到 DOM 结构,比如用v-if控制元素是否显示

<div id="app-3">
<p v-if="seen">现在你看到我了</p>
</div>
var app3 = new Vue({
el: '#app-3',
data: {
seen: true
}
})

 

5.v-for 指令可以绑定数组的数据来渲染一个项目列表:

<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: '学习 JavaScript' },
{ text: '学习 Vue' },
{ text: '整个牛项目' }
]
}
})
  1. 学习 JavaScript
  2. 学习 Vue
  3. 整个牛项目

在控制台里,输入 app4.todos.push({ text: '新项目' }),你会发现列表最后添加了一个新项目。

 

 6.v-on指令:用来绑定事件

<div id="app-5">
<p>{{ message }}</p>
<button v-on:click="reverseMessage">逆转消息</button>
</div>
var app5 = new Vue({
el: '#app-5',
data: {
message: 'Hello Vue.js!'
},
methods: {
reverseMessage: function () {
this.message = this.message.split('').reverse().join('')
}
}
})

 

v-on:click可以简写为:@click
还可绑定其他事件:
<form v-on:submit="onSubmit">
<input type="text"><br />
<input type="submit" value="提交">
</form>

可以传参:
<div v-for="item in fastnowdatacul" @click="taskitemclick(item)">

 7.

Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。

<div id="app-6">
<p>{{ message }}</p>
<input v-model="message">
</div>
var app6 = new Vue({
el: '#app-6',
data: {
message: 'Hello Vue!'
}
})

 

在input中改变输入值,会同步变化message变量,从而同步变化p中的内容

 

8.组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用

在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。在 Vue 中注册组件很简单:

// 定义名为 todo-item 的新组件
Vue.component('todo-item', {
template: '<li>这是个待办项</li>'
})

现在你可以用它构建另一个组件模板:

<ol>
<!-- 创建一个 todo-item 组件的实例 -->
<todo-item></todo-item>
</ol>

但是这样会为每个待办项渲染同样的文本,这看起来并不炫酷。我们应该能从父作用域将数据传到子组件才对。让我们来修改一下组件的定义,使之能够接受一个 prop

Vue.component('todo-item', {
// todo-item 组件现在接受一个
// "prop",类似于一个自定义特性。
// 这个 prop 名为 todo。
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})

现在,我们可以使用 v-bind 指令将待办项传到循环输出的每个组件中:

<div id="app-7">
<ol>
<!--
现在我们为每个 todo-item 提供 todo 对象
todo 对象是变量,即其内容可以是动态的。
我们也需要为每个组件提供一个“key”,稍后再
作详细解释。
-->
<todo-item
v-for="item in groceryList"
v-bind:todo="item"
v-bind:key="item.id">
</todo-item>
</ol>
</div>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})

var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: '蔬菜' },
{ id: 1, text: '奶酪' },
{ id: 2, text: '随便其它什么人吃的东西' }
]
}
})
  1. 蔬菜
  2. 奶酪
  3. 随便其它什么人吃的东西

效果跟这个一样:

 <li v-for="item in groceryList">
              {{item.text}}
   </li>

 

这样式显示不了内容的:

 <todo-item v-for="item in groceryList">
              {{item.text}}
 </todo-item>

只会显示1-3序号,text内容显示不出来,所以组件里面的内容要在组件里定义,不能到组件外。

 

9.methods里面的方法调用methods里面另一个方法xxx,或者使用data里的数据xxx,如果不是在回调中,可以用this.xxx或app.xxx

如果是在回调中,比如网络访问成功后回调,则必须用app.xxx,因为this在回调里不一定是指向vue对象了

 

在created里面调用methods方法只能用this调用,不能用app

 

posted @ 2018-05-29 11:14  手指乐  阅读(183)  评论(0编辑  收藏  举报