Document
添加品牌
Id
Name
Ctime
Cperation
{{item.id}}
{{item.name}}
{{item.ctime}}
删除
getAllList(){//获取所有的品牌列表
//分析
//1、由于已经导入了vue-resource包,所以,可以直接通过this.$http来发起数据请求
// 2、根据接口api文档,知道,获取列表的时候应该发起一个get请求
// 3、通过this.$http.get('url').then(function(result){})
// 4、当通过then指定回调函数之后,在回调函数中,可以拿到数据服务器返回的result
// 5、先判断result.status是否等于0,如果等于0,就成功了,可以把 result.message 赋值给 this.list;如果不等于0,可以弹框提醒,获取数据失败
this.$http.get('http://vue.studyit.io/api/getprodlist').then(result=>{
var result = result.body
//注意:通过$http获取到的数据,都在result.body中放着
if (result.status === 0) {
//成功了
this.list = result.message
}else{
//失败了
alert('获取数据失败!');
}
add(){
//添加品牌列表到后台服务器
//分析
//1、听过查看 数据API接口,发现,要发送一个 Post 请求,this.$http.post
//2、this.$http.post()中接受三个参数:
// 2.1 第一个参数:要请求的URL地址
// 2.2 第二个参数:要提交给服务器的数据,要以对象形式提交给服务器 {name:this.name}
// 2.3 第三个参数:是一个配置对象,要以哪种表单数据形式提交过去,{emulateJSON:true},以普通表单格式,将数据提交给服务器 application/x-www-form-urlencoded
this.$http.post('http://vue.studyit.io/api/addproduct',{name:this.name},{emulate:true}).then(result=>{
if(result.body.status === 0){
//成功了
// 添加完成后,只需要手动,再调用一下getAllList 就能刷新品牌列表了
this.getAllList()
//清空 name
this.name = ''
}else{
//失败了
alert('添加失败!')
}
})
}
del(id){
//删除品牌
this.$http.get('http://vue.studyit.io/api/delproduct'+id).then(result=>{
if(result.body.status === 0){
// 删除成功
this.getAllList();
}else{
alert('删除失败')
}
})
}
注意:如果我们通过全局配置了请求的数据接口的根域名,则在单独发起http请求的时候,请求的url路径应该以相对路径开头,前面不能带 /,否则 不会启用根路径做拼接
Vue.http.options.root = 'http://vu.studyit.io/'
add(){
this.$http.post('api/addproduct',{name:this.name},{emulate:true}).then(function(){})
}
Vue.http.options.root = 'http://vu.studyit.io/'
Vue.http.options.emulateJSON = true;
add(){
this.$http.post('api/addproduct',{name:this.name}).then(function(){})
}
(http://cn.vuejs.org/v2/guide/transitions.html)
为什么要有动画:动画能够提高用户的体验,帮助用户更好地理解页面中的功能
1、html结构
这是一个h3
2、css样式
3、JavaScript部分
var vm = new Vue({
el:'#app',
data:{
flag:false
}
})
1、html结构
这是一个h6
2、css样式
.my-enter,
.my-leave-to{
opacity:0;
transform:translateY(200px);
}
.my-enter-active,
.my-leave-active{
transition:all 0.8s ease;
}
1、html部分
这是一个h3
2、css部分
1、使用 :duration=“毫秒值” 来统一设置 入场 和 离场 时候的动画时长
这是一个h3
2、 使用 :duration="{enter:200,leave:400}"来分别设置 入场的时长 和 离场的时长
这是一个h3
1、html部分:v-show很关键,他让小球被动画控制起来
2、css样式:这里主要是设置小球的样式,没有什么实际的作用
2、javaScript部分
var vm = new Vue({
el:'#app',
data:{
flag:false,
},
methods:{
//注意:动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的 JS DOM对象
//大家可以认为,el是通过 document.getElementById('') 方式获取到的原生JS DOM对象
beforeEnter(el){
//beforeEnter 表示动画入场之前,此时动画尚未开始,可以在beforeEnter中,设置元素开始动画之前的起始样式
//设置小球开始动画之前的,起始位置
el.style.transform = "translate(0,0)"
},
enter(el,done){
// 这句话,没有实际的作用,但是,如果不写,出不来动画效果;
// 可以认为el.offsetWidth会强制动画刷新
el.offsetWidth
//enter 表示动画 开始之后的样式,这里,可以设置小邱完成动画之后的,结束状态
el.style.transform = "translate(150px,450px)"
el.style.transition = "all 1s ease"
// 这里的done,起始就是 afterEnter这个函数,也就是说:done是afterEnter 函数的引用
done()
},
afterEnter(el){
this.flag = !this.flag
}
}
})
1、html布局
-
{{item.id}} --- {{item.name}}
2、css样式
3、JavaScript代码
var vm = new Vue({
el:'#app',
data:{
id:'',
name:'',
list:[
{id:1,name:'赵高'},
{id:2,name:'秦桧'},
{id:3,name:'刘瑾'},
{id:4,name:'魏忠贤'}
]
},
methods:{
add(){
this.list.push({id:this.id,name:this.name})
this.id=this.name=''
}
}
})
1、html布局
-
{{item.id}} --- {{item.name}}
2、css样式
3、javaScript代码
var vm = new Vue({
el:'#app',
data:{
id:'',
name:'',
list:[
{id:1,name:'赵高'},
{id:2,name:'秦桧'},
{id:3,name:'刘瑾'},
{id:4,name:'魏忠贤'}
]
},
methods:{
add(){
this.list.push({id:this.id,name:this.name})
this.id=this.name=''
},
del(i){
this.list.splice(i,1)
}
}
})
{{item.id}} --- {{item.name}}
什么是组件:组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;
组件化和模块化的不同:
1、html布局
div id="app">
2、JavaScript代码
1、html布局
div id="app">
2、JavaScript代码
1、html布局
这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮
好用,不错!
2、JavaScript代码
1、html布局
//公有的组件控制的
这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮
好用,不错!
//私有的组件控制的
这是私有的组件
2、JavaScript代码
//定义公有组件
Vue.component('mycom3',{
template:'#tmp1'
})
var vm=new Vue({
el:'#app'
})
var vm2 = new Vue({
el:'#app2',
//定义私有的组件
components:{
login:{
template: '#tmp2'
}
}
})
1、html布局
2、JavaScript代码
1、html布局
{{count}}
2、javaScript代码
var dataObj = {count:0};
Vue.component('counter',{
template:'#tmp1',
data:function () {
return dataObj;
},
methods:{
increment(){
this.count++;
}
}
})
var vm=new Vue({
el:'#app'
})
//这是一个计数器的组件,身上有个按钮,每当点击按钮,让data中的count值+1
Vue.component('counter',{
template:'#tmp1',
data:function () {
return {count:0};
},
methods:{
increment(){
this.count++;
}
}
})
var vm=new Vue({
el:'#app'
})
3、页面显示
1、html布局
2、javaScript代码
//这是一个计数器的组件,身上有个按钮,每当点击按钮,让data中的count值+1
Vue.component('login',{
template:'登录组件
',
})
Vue.component('register',{
template:'注册组件
',
})
var vm=new Vue({
el:'#app',
data:{
flag:true
}
})
1、html布局
2、javaScript代码
//组件名称是字符串
Vue.component('login',{
template:'登录组件
',
})
Vue.component('register',{
template:'注册组件
',
})
//创建 Vue 实例,得到ViewModel
var vm =new Vue({
el:'#app',
data:{
comName:'login'//当前component中的 :is 绑定的组件的名称
}
})
多个组件的过渡简单很多,我们不需要使用key
特性。相反,我们只需要使用动态组件
1、html布局
2、css样式
3、javaScript代码