vue

vue初体验

"vue分页器"

Posted by ZWW on January 24, 2017

“vue”

一款MVVM轻量级框架,学习一下vue的常用指令,并用这些指令和方法写一个简单的分页器。 和avalon类似,vue也自定义了很多指令,基于viewmodel的框架都是拦截动态修改了数据,从而实现view层的实时更新。 Vue.js的常用指令: v-if指令 v-show指令 v-else指令 v-for指令 v-bind指令 v-on指令

这些基本指令官方文档介绍的很清楚。 v-for倒是很有意思

<div id="app">
    <a v-for="index in string"></a>
</div>

new Vue({
    el:'#app',
    string:20, //这样会渲染出1-20依次a标签
    string:[1,2,3,4,5],                 //这样也是一样的效果,循环可以是数字,也可以是遍历数组的元素
    data:{
        
    }
})

computed也有很大用处,字面意思就是实时计算。如果实时计算里关联了对象,那么当对象的某个值改变的时候,同事会出发实时计算。简单的列子

   <div id="app">
        <a ></a>
    </div>

    var vm = new Vue({
        el:'#app',
        data:{
             salary:2000,
        }
        computed:{
            salary:function(){
                return this.salary + 10;
            }
        }
    })
    vm.$data.salary = 20000; //输出20000+10

其他就是分页的计算

     computed: {
            pages: function () {
                var pag = [];
                if (this.activeNumber < this.pageshow) { //如果当前的激活的项 小于要显示的条数
                    //总页数和要显示的条数那个大就显示多少条
                    var i = Math.min(this.pageshow, this.page);
                    while (i) {
                        pag.unshift(i--);
                    }
                } else { //当前页数大于显示页数了
                    var middle = this.activeNumber - Math.floor(this.pageshow / 2), //从哪里开始
                        i = this.pageshow;
                    if (middle > (this.page - this.pageshow)) {
                        middle = (this.page - this.pageshow) + 1
                    }
                    while (i--) {
                        pag.push(middle++);
                    }
                }
                return pag
            }
        },
        methods: {
            pageShow: function (el) {
                if (vm.activeNumber == el) return;
                vm.activeNumber = el;
                //ajax 可传值
            }
        }

这个我也是参考了一下别人的列子,刚开始写出来的不懂动态计算,所以记录一下。 这是今年最后一篇技术文字了,今年失去了很多,逆境中要感谢很多的人,17年要走更稳的路,那么2016最后一次说再见吧!新年快乐。

vue