
这是因为页面进来的时候,会先执行我们的html代码,而此时,我们的vue还没开始工作.而我们的代码如下:
<li v-for="info in data"> <i class="user_ico"> <img src="{{ info.author.avatar_url }}" alt="{{ info.author.loginname }}"> <span>{{ info.author.loginname }}</span> </i> <time class="time">{{ info.create_at }}</time> <a class="talk" href="content.html?{{ info.id }}">{{ info.title }}</a></li>如上,页面去解析 src="{{ info.author.avatar_url }}"的时候,当然是找不到这个图片路径的.因此,自然而然会出错.因此,我们需要来处理一下这个代码.我们修改为<li v-for="info in data"> <i class="user_ico"> <img v-bind:src="info.author.avatar_url" v-bind:alt="info.author.loginname"> <span v-text="info.author.loginname"></span> </i> <time class="time" v-text="info.create_at"></time> <a class="talk" href="content.html?{{ info.id }}" v-text="info.title"></a></li>当我们把代码修改成这样之后,所有的问题就都解决了.function goodTime(str){ var now = new Date().getTime(), oldTime = new Date(str).getTime(), difference = now - oldTime, result="", minute = 1000 * 60, hour = minute * 60, day = hour * 24, halfamonth = day * 15, month = day * 30, year = month * 12, _year = difference/year, _month =difference/month, _week =difference/(7*day), _day =difference/day, _hour =difference/hour, _min =difference/minute; if(_year>=1) {result= "发表于 " + ~~(_year) + " 年前"} else if(_month>=1) {result= "发表于 " + ~~(_month) + " 个月前"} else if(_week>=1) {result= "发表于 " + ~~(_week) + " 周前"} else if(_day>=1) {result= "发表于 " + ~~(_day) +" 天前"} else if(_hour>=1) {result= "发表于 " + ~~(_hour) +" 个小时前"} else if(_min>=1) {result= "发表于 " + ~~(_min) +" 分钟前"} else result="刚刚"; return result;}代码有借鉴别人的代码的部分.function pushDom(data){ // 先进行遍历,把数据中的所有时间全部修改一遍 for (var i = 0; i < data.data.length; i++) { data.data[i].create_at = goodTime(data.data[i].create_at); }; // 然后再交给 vue 进行渲染 var vm = new Vue({ el: ".list", data: data });}好,通过上面的处理,我们再来看一下最终的页面效果.如下:
成功了.
VUE自定义过滤器方法
上面虽然我们成功了.但是,直接在VUE之前搞了一个for循环,实在是有点不太优雅.而且,我们要学习VUE啊,这算哪门子学习呢….
好,我们下面用VUE的自定义过滤器功能来进行处理.
官方教程,自定义过滤器 http://vuejs.org.cn/guide/custom-filter.html
function pushDom(data){ // 使用vue自定义过滤器把接口中传过来的时间进行整形 Vue.filter("time", function (value) { return goodTime(value); }) var vm = new Vue({ el: ".list", data: data });}并且,我们需要修改我们的html部分,如下: