javascript - 关于vuejs组件模板的缓存问题
PHP中文网
PHP中文网 2017-04-11 11:14:57
[JavaScript讨论组]

我用vue在做一个订单增删改查的功能,列表页,详情页,新增页,修改页这些都是独立的路由,我用vue-router管理他们的跳转。

现在的问题是在列表页,点击add到新增页面,在新增页面中的表单的某个input框中输入了内容,然后点击back,返回到列表页,这个时候再次点击add到新增页面,原来输过内容的input框中是有内容的。

/list -> /add (编辑了表单) -> /list -> /add (缓存了编辑后的表单)

我的add组件和template是这么写的:

/*add.js order add component*/
var Vue = require('vue');
var addTemplete = require('html!./add.html');

var orderAdd = Vue.extend({
  template: addTemplete,
  data: function() {
    return {
      orderDetail: {}
    }
  },
  route: {
    data: function() {
      // 即便在这里每次进add路由把orderDetail设置成空也没用
      return {
        orderDetail: {}
      }
    }
  }

})

/*add.html template*/

所以想请教下,如何在路由每次进入页面后,将template和data给reset了?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
天蓬老师
route: {
    data: function({next}) {
    
      this.orderDetail = {}; //每次进入后 重置数据
      //这里return 没用的吧
      next(); //执行下一个路由钩子函数
    }
  }
怪我咯

vue-router有一个可配置项叫can-reuse,vue-router的官方文档里面有,楼主可以去看看,可以解决路由组件被reuse的问题

PHP中文网
data: function() {
      // 即便在这里每次进add路由把orderDetail设置成空也没用
      
        this.orderDetail = {}
     
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号