vuejs 实战 双向数据绑定

1,使用vuejs实现数据绑定超级快的,超级好用

后台的数据是这样的: myinfo          {"list":[{'name':'daqing','age':18,'sex':0},{'name':'xiaofang','age',28,'sex':0},{'name':'xiaoli','age':30,'sex':1}]}

绑定到html上要这样写:

vuelist=new Vue({
        el:'#cmcfgid',
//绑定到一个id叫cmcfgid的html元素上
        data:{
            listinfo:myinfo[list],         
        },
//data里放的是想要绑上去的数据
        methods:{}
//methods中可以定义一些事件:v-on:click 等
    })

而html页面上可以是这样的:

<h2>前端配置</h2>
        <div   id="cmcfgid">
        //vuejs绑定的是这个盒子哦

        <div v-for="(item,index) in listinfo">  //vuejs使用for循环生成html,而且for循环的时候可以自动计数
        <p>性别:<select v-model="item.sex"><option value=1 >男</option><option value=0 >女</option></select></p>
        <p>姓名<input type="text" v-mode="item.name"</p>
        <p>年龄<input type="text" v-mode="item.age"</p>
        <p>序号:{{index}}</p>

        </div>
        </div>

v-model挺好用,可以用在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定

2,样式绑定和基础判断语法

                <p>性别:<select v-model="item.sex" ><option value="1" >男</option><option value="0" >女</option></select>
//此处如果选择了男,那么该item的sex会变成’1‘,然后下面又绑定的样式就会发生作用,把sex转成int以后,如果是true,第一个div就不会显示
                    <div v-bind:style="{'display':parseInt(item.sex)?'none':'block'}" style="padding:0px 10px;">
                        <p>我猜你喜欢玩游戏</p>
                    </div>
                    <div  v-bind:style="{'display':parseInt(item.isUseHKSDK)?'block':'none'}" style="padding:0px 10px;">
                        <p>我猜你喜欢裙子!</p>
                    </div>
                </p>

还是很不错的,不愧是我,这样用也可以

v-bind:style="{'color':checkglb?'green':'red'}"
意思是,本盒子style属性中的color一项和变量checkglb息息相关,如果变量为true,那盒子的字体颜色就是绿的,如果是false,那就是红的

3,最后就是事件和绑定了

原生html5一般用onclick,像这样:

<input id="btn1" type="button" onclick="test(event);" />
function test(event) {
    var obj=event.srcElement.
    //获取触发本次事件的元素,
    var jqobj=$(obj);
    //原生js转成jquery就真么写
    alert("我是行间事件");
}

jquery一般用

$("#ID").on(‘click’,function(){}) //on方式
$("#ID").click(function(){}) //on方式

vuejs一般是这样的:

html
<div id="glbcfgid">
<input class="lnum" type="text" maxlength="15" placeholder="请输入标准ip地址" v-model="glbcfg.ip" v-on:change="checkitem()">
</div>
js
    vuele=new Vue({
        el:'#glbcfgid',
        data:{
            glbcfg:hehe,
            checkglb:aaa,         
        },
        methods:{
            checkitem:function(){    //用于测试ip是否符合规则
                console.log("check ip");
            }
        }
    });
//

 4,最近遇到了一个坑,vuejs没有主动刷新页面

是这样的,我有个数组camshow,全局变量,被我绑定到vuejs中去了,

    winvue=new Vue({
        el:'#winarea',
        data:{
            camshow:camshow, 
        },
        methods:{
        }
    });

#camshow类似这样:
[[1,"c1",'东一区上','192.168.3.111'],[2,"c2",'东一区上','192.168.3.112']]

页面上是这样的:

 <div class="mainarea" id="winarea">
                    <div class="boxone" v-for="item in camshow">
                        <div class="chtitle"><p>{{item[1]}}</p></div>
                        <img class="camone" partid="3" v-bind:id="'img'+item[0]" onclick="checkimg(event)" src="__STATIC__/index/images/starting.jpg"> 
                    </div>
</div>

理想的情况是,我通过修改camshow修改html控件,然而,,,并没有!!!甚至绑定以后我都没法把camshow清空。。。最终找到了一个解决办法是这样的:

主要看两句话:

winvue.$set(winvue.camshow,i,uplist);
//设置并且应用到页面上去,把winvue.camshow数组中的第i项替换为uplist

menuvue.camshow.splice(k, length);
//删除winvue.camshow数组中的数据,从第k个开始,一共删除length个

 5,vuejs有关checkbox的语法糖

<div>请选择你的爱好(vue)</div>
    <input type="checkbox" v-model="hobby2" value="游泳">游泳
    <input type="checkbox" v-model="hobby2" value="健身">健身
    <input type="checkbox" v-model="hobby2" value="旅游">旅游
    <div>你已选中:{{hobby2}}</div>
var vm = new Vue({
      el: '#app',
      data:{
        msg:'hello',
        hobby2:[]
      },
      created(){
        console.log('created')
      },
      method:{
        login:function(){
          alert(1)
        }
      }
    })

选中游泳,游泳就会跑到数组hobby2中去,数组hobby2中如果有‘健身’,那么健身在页面上也会被选中

posted @ 2020-08-27 18:04  0点0度  阅读(207)  评论(0编辑  收藏  举报