于是,我决定把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变化完成后有一个回调,我在这里就可以重新绑定这个插件了
新闻热点
疑难解答