开发者问题收集

VUE variable.length 在模板中有效,但给出控制台警告

2016-11-27
18784

我有一个模板,需要知道所提供变量的长度...

{{ prefix }} {{ prefix.length }}

它输出了正确的信息,似乎工作正常,但它给出了这个警告:

[Vue warn]: Error when evaluating expression "{ input_prefix: (prefix.length > 0)}": TypeError: Cannot read property 'length' of undefined (found in component: )

我真的很想做对,并摆脱警告。有什么想法吗?

致以最诚挚的问候 John Lajer

3个回答

如果前缀为空或未定义,根据定义,它不能具有长度。

因此,通过三元运算符呈现长度,如果前缀存在则使用长度属性,如果前缀不存在则默认为零:

{{ prefix && prefix.length ? prefix.length : 0 }}
David L
2016-11-28

正如 David 指出的那样,当值为 null/未定义时,您将遇到问题。

我会使用计算变量来解决这个问题。

例如

new Vue({
  el: '#app',
  data: {
    prefix: 'Some value'
  },
  computed: {
    prefixLength: function(){
      if(this.prefix){
        return prefix.length
      }
      return '';
    }
  }
})

然后您只需在模板中使用它:

{{ prefix }} {{ prefixLength }}
Rodrigo Pereira
2016-11-28
new Vue({
  el: '#app',
  data: {
    prefix: 'Some value'
  },
  computed: {
    prefixLength: function(){
      if(this.prefix){
        return this.prefix.length
      }
      return '';
    }
  }
})

然后您只需在模板中使用它:

{{ prefix }} {{ prefixLength }}
sivahari
2019-01-10