Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 在v-if块中设置值_Vue.js_Vuejs2 - Fatal编程技术网

Vue.js 在v-if块中设置值

Vue.js 在v-if块中设置值,vue.js,vuejs2,Vue.js,Vuejs2,如何使用v-if做两件事 显示消息并 2) 将message.hassublocationoutput设置为true 因此,如果发生中断,则显示消息并将标志设置为truemessage.hassublocationoutput或将true传递给方法 <div v-if="!subLocation.outageTag.length - 1"> There is a problem </div> 有一个问题 您的设计中似乎存在一些

如何使用v-if做两件事

  • 显示消息并 2) 将
    message.hassublocationoutput
    设置为true
  • 因此,如果发生中断,则显示消息并将标志设置为true
    message.hassublocationoutput
    或将true传递给方法

          <div v-if="!subLocation.outageTag.length - 1">
             There is a problem
          </div>
    
    
    有一个问题
    
    您的设计中似乎存在一些固有的缺陷,但您可以调用一种方法来计算是否显示并同时设置
    消息

    HTML

    正如安德烈所提到的,这是非常不明智的。在条件逻辑中有副作用会隐藏核心逻辑。相反,应该在数据更改时更新布尔条件,而不是相反


    作为旁注,您可以使用V Sambor建议的计算属性来获得更好的性能,但这进一步隐藏了“错误”的实现,因为计算属性应该始终被缓存并流出,而您可以期望一个方法同时完成这两个任务,尽管在这种情况下是不可取的。

    您的设计中似乎存在一些固有的缺陷,但您可以调用一种方法来计算是否显示并同时设置
    消息

    HTML

    正如安德烈所提到的,这是非常不明智的。在条件逻辑中有副作用会隐藏核心逻辑。相反,应该在数据更改时更新布尔条件,而不是相反


    作为旁注,您可以使用V Sambor建议的计算属性来获得更好的性能,但这进一步隐藏了“错误”的实现,因为计算属性应该始终被缓存并流出,而您可以期望一个方法同时完成这两个任务,即使在这种情况下,这是不可取的。

    您可以使用一种计算方法,因为它与@David L的答案几乎相同,只是这将缓存您的显示结果,直到某些相关变量更改其值

    computed: {
      display() {
        if (this.subLocation.outageTag.length - 1) {
          return false;
        }
    
        this.message.hasSublocationOutage = true;
        return true;
      }
    }
    
    然后在Html中,您可以执行以下操作:

    <div v-if="display()">
        There is a problem
    </div>
    
    
    有一个问题
    
    您可以使用一种计算方法,因为它与@David L答案几乎相同,只不过这将缓存您的显示结果,直到某些相关变量更改其值

    computed: {
      display() {
        if (this.subLocation.outageTag.length - 1) {
          return false;
        }
    
        this.message.hasSublocationOutage = true;
        return true;
      }
    }
    
    然后在Html中,您可以执行以下操作:

    <div v-if="display()">
        There is a problem
    </div>
    
    
    有一个问题
    
    我决不会建议这样的事情!我决不会建议这样的事!Vue用于视图。它不应该自己控制状态-将此功能放在脚本中;)Vue用于视图。它不应该自己控制状态-将此功能放在脚本中;)