vue教程【九】- 监视路由

Vue教程 admin 暂无评论

多路由单组件

当我们使用单个组件绑定多个路由的时候,路由的跳转并不能再次触发组件的重建,此时我们需要对路由进行监视。

使用同一组件进行新建以及编辑

这里我们将修改ServiceAdd组件,来进行新建以及编辑的不同处理。

添加编辑路由

我们在main.js中添加编辑服务的路由,与新建使用一个组件;

将组件初始化事件进行调整

接下来我们调整组件的初始化事件,使其判断当前路由并进行相关处理:

mounted() {
    var that = this;// 初始化检测that.init();
    // 设置iCheck插件初始化SetICheck(that);
    // 设置switchery插件初始化SetSwitchery(that);
    // 设置daterangepicker插件初始化SetDaterangepicker(that, '#single_cal3');},
    // 监视路由watch: {$route() {// 当路由改变,进行初始化检测this.init();}
};

相关时间处理

下面是一些初始化检测,以及相关调用的事件

methods: {
// 初始化事件init() {var that = this;
// isEdit?if (that.$route.params.id) {
    that.edit(that.$route.params.id);} 
    else {var data = initData();
    // 初始化默认值that.setChange(data);
    $.each(data, (key, item) => {
    that.$set(that, key, item);});
    }},
    // 编辑事件
    edit(id) {
    var that = this;that.$set(that, 'isNew', false);
    // 获取服务数据,这里使用模拟数据$.get(`./static/service1.json`, repo => {
    // 设置组件data的值that.setChange(repo);$.each(repo, (key, item) => {
    that.$set(that, key, item);
    });});},
    // 对插件进行赋值设置
    setChange(item) {
    var that = this;// 设置iCheck赋值
    $(`input.flat[name="type"][value="${item.type}"]`).iCheck('check');// 设置switchery赋值
    if (item.state !== that.state) {$('.js-switch[name="state"]').trigger('click');}
    if (item.directIssue !== that.directIssue) {
    $('.js-switch[name="directIssue"]').trigger('click');}
    },
    submit() {
    var that = this,text;// 先做一些简单的校验,不通过则显示错误信息
    if (!that.name) {text = '请填写名称';}if (text) {that.error.text = text;that.error.shown = true;return;}
    that.error.shown = false;var that = this;
    that.$router.push('/app/terminals');
    }}

页面效果

  • 新建

image

  • 编辑

image

结束语


当初对于多个路由匹配单个组件,本骚年还以为一定会有一些方法,在路由改变的时候进行销毁重建组件,后来找不到,最终也就监视路由进行处理。虽然有可能是本骚年太蠢没找到对应的方法调用,但是其实这种监视路由处理的方法或许更合理一些呢。

转载请注明: Vue教程中文网 - 打造国内领先的vue学习网站-vue视频,vue教程,vue学习,vue培训 » vue教程【九】- 监视路由

喜欢 ()or分享