zoukankan      html  css  js  c++  java
  • 项目回顾2-vue的初体验-在已有项目局部使用vue,无须额外配置

    当了解到尤大大的vue的时候,就很想在项目里用一下,不过当用了vue cli 创建了一个脚手架之后,感觉现有的项目改造难度太大了,毕竟原来是JQ的。这个项目已经上线,基本功能也完成了,客户提出来后台对项目需要有时间,省市,进度,提交时间的筛选,还有项目名的筛选。后台的同事已经沉溺于其他项目,再拉他回来写api有点麻烦。

    于是,我决定把vue嵌入到现有的项目中,并不使用npm,webpack,gulp等家伙,也就不用配置啦,就像以前使用jquery插件一样。

    这样的话就很简单了

    <script src="../source/js/vue.js"></script>

    只用这样引入vue.js就可以开工啦。

    一、最基本的结构是

    var vm = new Vue({
        el: "#mainBody",//绑定根元素
        data: {
        },
        methods: {
    
        }
    })

    二、在vue的生命周期中,我在compiled里去ajax获得数据(很挫的还是用的$.ajax),然后赋值给data里的records。然后在methods里写一个用来筛选城市的方法

    var vm = new Vue({
        el: "#mainBody",//绑定根元素
        data: {
            records: [],//数据源
            city: "",
            country: "",
        },
        methods: {
            cityFilter: function(data) {
                if ((vm.city !== "" && vm.city !== "市" && vm.city !== data.city) || 
            (vm.country !== "" && vm.country !== "县(市、区)" && vm.country !== data.country)) { return false } else { return true } }, }, compiled: function() { var self = this; $.get('/user/getMyEvent.do', function(data) {//通过ajax获得数据源 if (data.code == 200) { self.records = data.info; vm.$nextTick(function() { TablePage(".qu-table", 10); }) } }) } })
    <tr v-for="record in records | filterBy cityFilter record  " class="processProgram">
                    <td class="programName">{{record.eventName}}</td>
    </tr>

    三、这样我就可以用v-for循环输出一个列表了,用了filterBy来筛选城市,把单个记录record作为参数传给cityFilter.在这个tr里面,可以将record里的内容通过mustache({{}})直接写进去。

    四、这样的话,还需要来监听select的值来更新筛选的条件,也就是data里面的city还有country,这里可以用v-model双向绑定,这样只要select里的值改变,filterBy里的函数

    cityFilter的结果就会改变,这样列表就会被更新了。

    <select id="s_city" name="s_city" v-model="city"></select>

    不过我用这种方式的时候遇到一个问题,就是我的分页插件用的是以前的,dom变化之后,分页插件要重新绑定,这时候就比较麻烦,于是我还是比较不争气的用了jquery的写法

        $("#s_city").on('change', function(event) {
            vm.$data.city = $(this).val();
            vm.$data.country = $("#s_county").val();
            Vue.nextTick(function() {
                $(".bottom-search").empty();
                TablePage(".qu-table", 10);
            })
        });

    这样修改数据之后,使用nextTick方法,可以在下一次dom变化完成后有一个回调,我在这里就可以重新绑定这个插件了。

    但说到底这样还是太挫了,但毕竟整个项目以前都是jquery的……于是我决定用vue重写一下这个分页,下次分享给大家我重写分页的心得。

    今天就分享到这里啦,水平有限,每一次写都是用了洪荒之力啦,请各位大牛手下留情啦

    ---------------------------------------------------------------------------------------------------------------------------

    版权所有:http://www.cnblogs.com/wzls/  五木十架

    最近在做一个框选拖拉的jQuery插件,还在完善中,https://github.com/lsbrucelincoln/dragS,虽然jQuery插件貌似落伍了,但是毕竟是小菜鸟呀,学习还是有帮助的,之后希望和大家分享制作的心得

  • 相关阅读:
    【BZOJ 4581】【Usaco2016 Open】Field Reduction
    【BZOJ 4582】【Usaco2016 Open】Diamond Collector
    【BZOJ 4580】【Usaco2016 Open】248
    【BZOJ 3754】Tree之最小方差树
    【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
    【51Nod 1622】【算法马拉松 19C】集合对
    【51Nod 1616】【算法马拉松 19B】最小集合
    【51Nod 1674】【算法马拉松 19A】区间的价值 V2
    【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
    【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
  • 原文地址:https://www.cnblogs.com/wzls/p/5782799.html
Copyright © 2011-2022 走看看