[TOC]
#### 1.组件之子组件中data使用实例与text-xtemplate的使用方法
<div id="hdcms">
<hd-news></hd-news>
<hr>
<hd-news></hd-news>
<hr>
<hd-news></hd-news>
</div>
<!--定义一个组件-->
<script type="text/x-template" id="hdNews">
<div>
<li v-for="(v,k) in news">
{{v.title}}
<button @click="del(k)">删除</button>
</li>
</div>
</script>
<script>
<!--子组件不能共用同一个数据-->
var hdNews = {
template: "#hdNews",
data(){
return {
news: [
{title: 'hdcms'},
{title: 'hdphp'}
]
};
},
methods: {
del(k){
this.news.splice(k, 1);
}
}
};
new Vue({
el: '#hdcms',
components: {hdNews},
data: {}
});
</script>
#### 2.组件之组件间的数据参props的使用实例操作
:lists="news" 父组件向子组件传递数据。
<div id="hdcms">
<hd-news hd="abc" cms="后盾人houdunwang.com" :show-del-button="true" :lists="news"></hd-news>
</div>
<script type="text/x-template" id="hdNews">
<div>
{{hd}}-{{cms}}- {{showDelButton}}
<li v-for="(v,k) in lists">
{{v.title}}
<button @click="del(k)" v-if="showDelButton">删除</button>
</li>
</div>
</script>
<script>
var hdNews = {
template: "#hdNews",
props:['hd','cms','showDelButton','lists'],
data(){
return {};
}
};
new Vue({
el: '#hdcms',
components: {hdNews},
data: {
news:[
{title:'hdcms'},{title:'hdphp'},{title:'houdunren.com'}
]
}
});
</script>
#### 3.组件之props数据的多种验证机制实例详解
组件hdNews 必须传:show-del-button="true"
<div id="hdcms">
<hd-news :show-del-button="true"></hd-news>
</div>
<script type="text/x-template" id="hdNews">
<div>
<li v-for="(v,k) in lists">
{{v.title}}
<button @click="del(k)" v-if="showDelButton">删除</button>
</li>
</div>
</script>
String Number Boolean Function Object Array
<script>
var hdNews = {
template: "#hdNews",
props: {
showDelButton: {
type: [Boolean, Number],
required: true
},
// showDelButton: {
// validator(v){
// return v===1 || v===0;
// },
// },
lists: {
type: Array,
default(){
return [{title: '后盾人'}]
}
}
},
data(){
return {};
}
};
new Vue({
el: '#hdcms',
components: {hdNews},
data: {
news: [
{title: 'hdcms'}, {title: 'hdphp'}, {title: 'houdunren.com'}
]
}
});
</script>
#### 4.组件之子组件使用$on与$emit事件触发父组件实现购物车功能
<div id="hdcms">
<!--@sum="total"通知父组件计算价格-->
<hd-news :lists="goods" @sum="total"></hd-news>
总计:{{totalPrice}}元
</div>
<script type="text/x-template" id="hdNews">
<table border="1" width="90%">
<tr>
<th>商品名称</th><th>商品价格</th><th>商品数量</th>
</tr>
<tr v-for="(v,k) in lists">
<td>{{v.title}}</td><td>{{v.price}}</td>
<td>
<input type="text" v-model="v.num" @blur="sum">
</td>
</tr>
</table>
</script>
<script>
var hdNews = {
template: "#hdNews",
props: ['lists'],
methods:{ //子组件修改后通知父组件统计计算。
sum(){
this.$emit('sum');
}
}
};
new Vue({
el: '#hdcms',
components: {hdNews},
mounted(){ //页面加载完成执行统计方法。
this.total();
},
data: {
totalPrice:0,
goods:[
{title:'iphone7Plus',price:100,num:1},
{title:'后盾人会员',price:200,num:1},
]
},
methods:{
total(){
this.totalPrice=0;
this.goods.forEach((v)=>{
this.totalPrice+=v.num*v.price;
})
}
}
});
</script>
#### 5.组件之使用.sync修饰符与computed计算属性超简单的实现美团购物车原理
<div id="hdcms">
<hd-news :lists.sync="goods"></hd-news>
总计:{{totalPrice}}元
</div>
<script type="text/x-template" id="hdNews">
<table border="1" width="90%">
<tr>
<th>商品名称</th><th>商品价格</th><th>商品数量</th>
</tr>
<tr v-for="(v,k) in lists">
<td>{{v.title}}</td><td>{{v.price}}</td>
<td>
<input type="text" v-model="v.num">
</td>
</tr>
</table>
</script>
<script>
var hdNews = {
template: "#hdNews",
props: ['lists']
};
new Vue({
el: '#hdcms',
components: {hdNews},
computed:{
totalPrice(){
var sum=0;
this.goods.forEach((v)=>{
sum+=v.num*v.price;
})
return sum;
}
},
data: {
goods:[
{title:'iphone7Plus',price:100,num:1},
{title:'后盾人会员',price:200,num:1},
]
}
});
</script>
#### 6.组件之使用内容分发slot构建bootstrap面板panel
<div id="hdcms">
<form action="" class="form-horizontal">
<bs-panel>
<h4 slot="title">hdphp开源框架</h4>
<bs-input title="标题" value="后盾人" slot="body"></bs-input>
<bs-input title="点击数" value="100" slot="body"></bs-input>
abc
</bs-panel>
</form>
</div>
<script type="text/x-template" id="bsPanel">
<div class="panel panel-default">
<div class="panel-heading">
<slot name="title"></slot>
</div>
<div class="panel-body">
<slot name="body"></slot>
</div>
<h1>
<slot></slot>
</h1>
</div>
</script>
<script type="text/x-template" id="bsInput">
<div class="form-group">
<label for="" class="col-sm-2 control-label">{{title}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" :value="value">
</div>
</div>
</script>
<script>
var bsPanel = {
template: "#bsPanel"
};
var bsInput = {
template: "#bsInput",
props: ['title', 'value']
}
new Vue({
el: '#hdcms',
components: {bsPanel, bsInput},
});
</script>
#### 7.组件之父组件使用scope定义子组件模板结构实例讲解
用户在根组件中修改模版的样式
<div id="hdcms">
<hd-list :data="news">
<template scope="v">
<li>
<h1>{{v.field.title}}</h1>
</li>
</template>
</hd-list>
</div>
<script type="text/x-template" id="hdList">
<ul>
<slot v-for="v in data" :field="v"></slot>
</ul>
</script>
<script>
var hdList = {
template: "#hdList",
props:['data']
};
new Vue({
el: '#hdcms',
components: {hdList},
data:{
news:[
{title:'hdcms'},
{title:'后盾人'}
]
}
});
</script>
#### 8.组件之使用动态组件灵活设置页面布局
<div id="hdcms">
<div :is="formType"></div>
<input type="radio" v-model="formType" value="hdInput"> 文本框
<input type="radio" v-model="formType" value="hdTextarea"> 文本域
</div>
<script>
var hdInput = {
template: "<div><input/></div>",
};
var hdTextarea = {
template: "<div><textarea></textarea></div>",
};
new Vue({
el: '#hdcms',
components: {hdInput,hdTextarea},
data:{
formType:"hdTextarea"
}
});
</script>
- html&jquery网页特效
- 标签分类及特点
- 关于文字标签
- 网页定时跳转
- css透明度和插件
- 0.前端常用工具
- 1.tab切换效果
- 2.tab切换效果多个代码复用
- 3.百度新闻导航条效果
- 4.解决鼠标移入过快的问题
- 5.滚动条位置
- 6.元素尺寸
- 7.全选反选操作
- 8.固定定位
- 9.开关效果
- 10.节点操作
- 11.仿小米商品展示效果
- 12.仿小米商品展示效果复用
- 13.固定导航栏效果
- 14.凡客轮播图效果
- 15.顶部下滑广告效果
- 16.京东左右滑动轮播图
- 17.京东左右滑动无缝轮播图
- 18.选择器
- 19.筛选
- 20.开关效果
- 21.滑动效果
- 22.小米商品效果css实现
- 23.元素水平垂直居中
- laravel5.6
- LARAVEL 介绍&安装
- javascript & css 脚手架
- php常用工具类
- 安装laravel-ide-helper增强代码提示
- 使用migration创建表和数据填充
- 解决mysql5.7以下laravel不能执行数据迁移的问题
- 路由
- 登陆操作自定义模型
- 使用中间件middleware进行登录权限验证
- 进行表单验证处理
- 使用laracasts-flash定制消息提示
- 资源路由
- 宝塔面板安装fileinfo扩展
- laravel上传处理与使用hdjs快速实现前端上传组件
- thinkphp
- phpstorm
- phpstorm安装插件
- 定义快捷键
- 关闭提示
- 将代码实时同步到远程服务器
- sublime
- composer
- git使用
- git安装和配置作者信息
- git新建项目和维护项目
- git日志操作
- git别名操作
- git分支操作
- git生成发布压缩包
- git系统别名
- gitrebase操作
- 使用SSH与GITHUB远程服务器进行无密码连接
- 本地版本库主动使用remote与远程GITHUB进行关联
- 本地分支与GITHUB远程分支同步
- 项目实战-新入职员工参与项目开发时分支使用
- 自动部署
- ios开发
- linux
- 1.centos6.5 mysql忘记登入密码
- html5
- 标签
- 表单
- 音频与视频
- webstorage储存
- canvas
- css3
- 01.CSS3布局
- 02.transition动画
- 03.animation动画
- 04.flex弹性盒模型
- Less
- gulpjs
- es6
- ES6模块化
- let和const命令
- ES6函数扩展&解构赋值
- JavaScript之数据遍历
- class类
- Set和Map数据结构
- Vue
- 1.创建第一个应用
- 2.属性动态绑定
- 3.表达式
- 4.解决phpstorm不识别ECMASCRIPT6语法的问题
- 5.watch监听属性
- 6.使用object与array控制class
- 7.条件渲染
- 8.循环
- 9.变异方法
- 10.事件
- 11.表单
- 12.组件
- 13.css过渡动
- 14.js库控制vue过渡动作
- 15.自定义指令directive
- 16.使用vue-cli初始化单页面应用
- 17.Vue-router路由
- 18.vuex
- 19.vue-cli
- webpack
- zanui
- nodejs