搜索

首页  >  问答  >  正文

javascript - 请问如何优化该vue组件?

<template>
  <p>
    <ul>
      <li>帐号 <input type="text" name="user"></li>
      <li>密码 <input type="password" name="password"></li>
    </ul>
    <ul v-if="title == '用户注册'">
      <li>确认密码 <input type="password" name="password"></li>
      <li>邮箱 <input type="text" name="email"></li>
      <li>
        <input type="submit" value="注册">
        <input v-on:click='change' type="button" value="登录">
      </li>
    </ul>
    <ul v-else>
      <li>
        <input type="submit" value="登录">
        <input v-on:click='change' type="button" value="注册">
        忘记密码?
      </li>
    </ul>
  </p>
</template>

因为v-if这些必须挂载到元素里,虽然这样能实现切换,但button归属元素觉得不规范.有什么改进方法没?

<script>
export default{
  data () {
    return {
      title: '用户登录'
    }
  },
  methods: {
    change: function () {
      this.title = this.title === '用户登录' ? '用户注册' : '用户登录'
    }
  },
  watch: {
    title: function () {
      this.$store.commit('setValue', {title: this.title})
    }
  },
  created: function () {
    this.$store.commit('setValue', {title: this.title})
  }
}
</script>

title 是页面标题,虽然这实现了默认加载标题和切换标题,但感觉代码冗余.有没有简便的办法?

伊谢尔伦伊谢尔伦2756 天前403

全部回复(1)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:27:59

    目前想到的一个

      methods: {
        change: function () {
          this.title = this.title === '用户登录' ? '用户注册' : '用户登录'
          this.$store.commit('setValue', {title: this.title})
          return this.title
        }
      },
      created: function () {
        this.change()
      }

    回复
    0
  • 取消回复