带着实例继续学习(1):组件式登录页面-点击事件、组件通讯<四>

安装文件插件

npm install file-loader --save-dev

更新webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
module.exports = {
	entry:{
		"index":[__dirname+'/src/js/index.js',
				'webpack-dev-server/client?http://127.0.0.1:8080'
		]
	},
	output:{
		publicPath:"http://127.0.0.1:8080/",
		path:__dirname+'/src/webapp/js',
		filename:'[name].js'
	},
	resolve:{
		alias:{
			vue:'vue/dist/vue.js'
		},
	},
	externals:{

	},
	module:{
		loaders:[
			{
				test:/\.js$/,
				loader:"babel-loader",
				query:{compact:true}
			},
			{
				test:/\.vue$/,
				loader:"babel-loader!vue-loader",
				exclude:"/node_modules/"
			},
			{
				test:/\.css$/,
				loader:"style-loader!css-loader",
			},
			{
				test:/\.(eot|woff|woff2|svg|ttf)([\?]?.*)$/,
				loader:"file-loader",
			},
			
		]
	},
	plugins:[
		new HtmlWebpackPlugin({
			/*filename:__dirname+'/src/webapp/index.html',*/
			filename:"index.html",
			template:__dirname+'/src/html/index.html',
			inject:'body',
			hash:true,
			chunks:['index']
		})
	]

}

/html/index.html

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<div id="main">
		<userlogin ></userlogin>
	</div>
</body>
</html>

/js/index.js

import Vue from "vue";


/*引用组件*/
import userlogin from '../components/user-login.vue';


/*实例化组件*/
let params = {
	el: '#main',
	components:{
		'userlogin': userlogin,
	}
}
new Vue(params);

/components/user-login.vue

<template>
	<div id="user" class="col-md-8 col-md-offset-2">
		<h2 class="text-center"></h2>
		<form class="form-horizontal">
			<username placeholder="请输入用户名" ref="uname"></username>
			<usersubmit></usersubmit>
		</form>
	</div>
</template>

<style type="text/css">
	@import './../css/bootstrap.css';
	#user{
		margin-top:50px;
	}
</style>

<script>
	import username from './user/user-name.vue';
	import usersubmit from './user/user-submit.vue';


	export default{
		components:{
			'username':username,'usersubmit':usersubmit,
		}
	}
</script>

/components/user/user-name.vue

<template>
	<div>
		<div class="form-group">
			<label  class="col-sm-2 control-label">用户名:</label>
			<div class="col-sm-10">
		      <input type="text" class="form-control" v-model="username" :placeholder="placeholder" />
		    </div>
		</div>
	    
	</div>
</template>

<script>
export default{
	props:['placeholder'],
	data:function(){
		return {'username':''}
	}
}
	
</script>

/components/user/user-submit.vue

<template>

	    <div class="form-group">
			<div class="col-sm-offset-2 col-sm-10">
		      <button type="button" class="btn btn-success" v-on:click="test">提交</button>
		    </div>
	    </div>
	
</template>

<script>
export default{
	
	methods:{
		test:function(){
			alert(this.$parent.$refs.uname.$data.username)
		}
	}
}
	
</script>

效果:


这个实例主要是看子组件之前的通信方式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值