最近用VUE做了个项目,觉得VUE确实很有趣,其中双向绑定是最吸引人的特性了。
绑定文本框
用反应写一个文本框:
<代码>类文本框扩展组件{ 构造函数(道具){ 超级(道具); 这一点。状态={txtValue:“hello world”}; 这一点。setTxtValue=https://www.yisu.com/zixun/this.setTxtValue.bind(这); } setTxtValue (e) { 这一点。setValue ({txtValue: e.target.value}) } 呈现(){ 回报(& lt;/template> & lt; script> 出口默认{ 数据(){ 返回{ txtValue:“hello world” } } } & lt;/script> 代码>一眼就看到底了,爽得不要不要的。
绑定复选框和单选
入了门就看个更有趣的例子,做个问卷调查:
既然是数据驱动,就先设计一下数据模型:
<代码>会话:[//每个问题及选项称为一个会话 { 问题:3。你用的哪个langurage ?',//问题文本 类型:“复选框”,//问题类型,单选,多选 答:[],//多选题答案 值:",//单选题答案 errMsg:“,//错误信息 选择:[//答案的选项 { 标签:“Java”, 值:' 1 ', }, …//更多的选项 ] }, …//更多的会话 )代码>设计一个组件,显示会话
<代码> & lt; template> & lt; div类="问题"比; & lt; div> & lt; label>{{会话。问题}},{{session.answer}} & lt;/label> & lt;/div> & lt; div v="会话。类型===案囱】颉北? & lt; div v="(选项,好,oidx)会话。选项”:关键=" oidx”比; & lt; label> & lt;输入:type="会话。“v模型="会话类型。回答:价值=" https://www.yisu.com/zixun/option.value "/比; {{option.label}} & lt;/label> & lt;/div> & lt;/div> & lt; div v="会话。类型===电台”在 & lt; div v="(选项,好,oidx)会话。选项”:关键=" oidx”比; & lt; label> & lt;输入:type="会话。“v模型="会话类型。价值”:价值=" https://www.yisu.com/zixun/option.value " @change=" handleRadio(会话)”/比; {{option.label}} & lt;/label> & lt;/div> & lt;/div> & lt; div类=" err-msg "在{{session.errMsg}} & lt;/div> & lt;/div> & lt;/template> & lt; script> 出口默认{ 道具:“会话”, 方法:{ handleRadio(会话){ 会话。回答=[会话。值) }, } } & lt;/script> 代码>接收并显示一个会话,会根据会话的类型做不同的绑定:
<李>类型是多选时,输入的值绑定到会话。答案,结果是一个数组,例如[' 1 ',' 2 ']李> <李>类型是单选时,输入的值绑定到session.value,结果是一个值,如“1”,为了统一效果,加了一个处理将单选的结果也放入会话。答案,例如[1]
我们引入vuex作为全局的状态管理:李><代码> Vue.use (Vuex); var={状态 会话:[ { 问题:3。你用的langurage ?” 类型:“复选框”, 答:[], 价值:”, errMsg:”, 选择:[ { 标签:“Java”, 值:' 1 ', }, { 标签:“python”, 值:' 2 ', }, { 标签:“C”, 值:' 3 ', }, { 标签:“迅速”, 价值:“4”, }, ] }, … ] }={var行动 submitAnswer({提交,状态}){ … } } 常量存储=new Vuex.Store ({ 状态,行动 }) 出口默认存储; 代码>用过回来的的同学看出端倪了吗?不用调度,不用减速器,商店里面的数据直接绑定在组件上,一旦变化,马上触发UI更新,省去了很多无聊的代码。还有,即使是商店里面深层的数据发生变化,vue可以很自然地监察,然后更新页面。不像反应,要析构赋值或者combineReducer。
接下来只要再来一段,引入组件,循环使用<代码> & lt; template> & lt; div v="(会话、关键idx) store.state美元。会话”:关键=" idx "比;=& lt;会议:会议“会话”祝辞& lt;/Session> & lt;/div> & lt;/template> & lt; script> 从“. ./会话”导入会话; 出口默认{ 组件:{ 会话 }, } & lt;/script>玩转VUE的双向绑定