2017-06-09 47 views
0

我有一个自定义表格,用作进度条,并在每个td上添加@click事件,该事件将重定向到特定页面。现在,行为应该是这样的:禁用@click事件Vuejs 2

  1. 用户不能跳过,所以@click事件到正确的项目应该被禁用。
  2. 只有@click事件功能回去时。

模板:

<tr> 
    <td class="circle col-xs-2 col-xs-offset-1" 
      @click="goRelationship">Relationship</td> 
    <td class="circle col-xs-2" 
      @click="goSkills">Skills</td> 
    <td class="circle col-xs-2" 
      @click="goPurpose">Purpose</td> 
    <td class="circle col-xs-2" 
      @click="goFit">Fit</td> 
    <td class="circle col-xs-2">Submit</td> 
</tr> 

脚本:

methods: { 
      goRelationship: function() { 
       window.location.href = "/v2/review/relationship" 
      }, 
      goSkills: function() { 
       window.location.href = "/v2/review/skills" 
      }, 
      goFit: function() { 
       window.location.href = "/v2/review/fit" 
      }, 
      goPurpose: function() { 
       window.location.href = "/v2/review/purpose" 
      } 
     } 
+1

对不起,我试图理解,你能更精确吗?想要发生什么?会发生什么如果我点击其中的一个? – Kzy

+0

例如,我在'关系选项卡',当我点击'技能选项卡'时,我需要阻止它重定向到那个,除非它是一个倒退过程。 – claudios

+0

目前还不清楚你实际需要什么。也许这有助于:有事件的修饰符。例如'@ click.prevent =“...”'防止默认操作。文档:https://vuejs.org/v2/guide/events.html#Event-Modifiers – wostex

回答

1

你需要实现一些逻辑来检查,如果导航步骤激活。这里有一个建议:

的步骤清单:

data() { 
    return { 
     steps: { 
      relationship: { 
       dependancies: [], 
       completed: false, 
      }, 
      skills: { 
       dependancies: ['relationship'], 
       completed: false, 
      }, 
      fit: { 
       dependancies: ['relationship', 'skills'], 
       completed: false, 
      }, 
      purpose: { 
       dependancies: ['relationship', 'skills', 'fit'], 
       completed: false, 
      } 
     } 
    } 
} 

的通用进入下一步骤的功能:

goToStep(stepName) { 
    if (checkDependanciesCompletion(this.steps[stepName].dependancies)) { 
     window.location.href = `/v2/review/${stepName}` 
    } 
} 

和一个函数来检查,如果你想要去的步骤是积极的:

function checkDependanciesCompletion(dependencies) { 
    let isCompleted = true; 

    dependencies.forEach((dep) => { 
     if (!this.steps[dep].completed) { 
      isCompleted = false; 
     } 
    }); 

    return isCompleted; 
} 
+0

嘿!谢谢我会试试这个 – claudios

+0

尝试插入步骤后,但它说方法,但它说'模块构建失败'或我错过了什么 – claudios

+0

它应该在你的数据函数,我已经更新了这个例子。这些函数应该放在方法对象中 – Nora