账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue 使用自定义事件的表单输入组件
    20
    0

    使用自定义事件的表单输入组件

    自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。要牢记:

    <input v-model="something">

    这不过是以下示例的语法糖:

    <input
      v-bind:value="something"
      v-on:input="something = $event.target.value">

    所以在组件中使用时,它相当于下面的简写:

    <custom-input
      v-bind:value="something"
      v-on:input="something = arguments[0]">
    </custom-input>

    所以要让组件的 v-model 生效,它应该 (从 2.2.0 起是可配置的):
    接受一个 value prop
    在有新的值时触发 input 事件并将新值作为参数
    我们来看一个非常简单的货币输入的自定义控件:

    <currency-input v-model="price"></currency-input>
    Vue.component('currency-input', {
      template: '\
        <span>\
          $\
          <input\
            ref="input"\
            v-bind:value="value"\
            v-on:input="updateValue($event.target.value)"\
          >\
        </span>\
      ',
      props: ['value'],
      methods: {
        // 不是直接更新值,而是使用此方法来对输入值进行格式化和位数限制
        updateValue: function (value) {
          var formattedValue = value
            // 删除两侧的空格符
            .trim()
            // 保留 2 位小数
            .slice(
              0,
              value.indexOf('.') === -1
                ? value.length
                : value.indexOf('.') + 3
            )
          // 如果值尚不合规,则手动覆盖为合规的值
          if (formattedValue !== value) {
            this.$refs.input.value = formattedValue
          }
          // 通过 input 事件带出数值
          this.$emit('input', Number(formattedValue))
        }
      }
    })
    

    这是vue.js文档上的例子,整个人都懵逼了。。
    首先是:
    这不过是以下示例的语法糖:

    <input
      v-bind:value="something"
      v-on:input="something = $event.target.value">

    所以在组件中使用时,它相当于下面的简写:

    <custom-input
      v-bind:value="something"
      v-on:input="something = arguments[0]">
    </custom-input>

    直接所以了。。。为啥在组件使用中是something = arguments[0]了呢?

    第二个问题是。。。这个例子我实在是很费解,谁能够详细的解释一下吗?

    第三个问题。。。我学了js,html,css。然后把vue从头看到这里的。到这卡住了。感觉理解难度突然变得很高,文档中又没有详细解释(我不是想喷这个文档...)。卡的死死的。。我不知道是因为我自己学的不好还是怎么样,通常情况下有了基础,然后看文档应该是循序渐进,慢慢理解,不会存在这种卡主的情况的。想问一下大家,这种情况我该怎样继续学习?是继续看文档或者回头补js还是看看教学视频什么的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 东洲鱼 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部