【问题标题】:How to bind class to a method that needs to change in Vue.js (v1)如何将类绑定到需要在 Vue.js (v1) 中更改的方法
【发布时间】:2018-08-06 10:02:16
【问题描述】:

我对 Vue.js 完全陌生,虽然我掌握了基础知识,但我仍然在努力解决以下问题:

我认为我需要将一个类绑定到一个方法,而不是一个对象。我知道该怎么做,但这似乎只运行一次。我相信这是因为该方法在技术上永远不会改变,只有该方法评估的对象。

我的场景是:我有一个日历,用户需要在其中设置开始和结束日期。需要有“开始日期”类、“中间日期”类和“结束日期”类。这将基于元素的“nth-child”或索引。

我怎样才能绑定到不只运行一次的方法?有什么办法可以让 Vue 认为每次点击都更新了方法?

我的代码中的逻辑是:

checkSelection(n) {
    var classesToReturn = [];
    if(n == this.startDate) {
       classesToReturn.push('start-date');
    }

    //Other evaluations here etc..

    return classesToReturn.join(' ');
}

我正在使用 Vue v1,因为这是一个现有项目,我觉得将其升级到 v2 还不够舒适。

【问题讨论】:

    标签: javascript vue.js frameworks


    【解决方案1】:

    使用以下内容:

    this.$forceUpdate();
    

    在函数结束时为了更新vue。

    在你的情况下:

    checkSelection(n) {
    var classesToReturn = [];
    if(n == this.startDate) {
       classesToReturn.push('start-date');
    }
    
    //Other evaluations here etc..
    
    this.$forceUpdate();
    
    return classesToReturn.join(' ');
    }
    

    编辑

    每当你在 vue 的data 中改变一些对象时,它不会自动更新,所以你应该做的是调用我提到的这个函数。我不知道它是否应该放在那个方法中,但是你应该把它放在对你的对象进行更改的那一行之后。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2019-11-04
    相关资源
    最近更新 更多