我有一个用户名数组,在列表中呈现,如下所示:
{{#each contacts}}
<div class="name">{{this}}</div>
{{/each}}
这工作得很好,但后来我尝试从事件中获取用户名:
'click .name': function(e,t){
console.log(this)
}
我得到这个令人沮丧的物体String {0: "c", 1: "h", 2: "a", 3: "r", 4: "l", 5: "i", 6: "e", length: 7, [[PrimitiveValue]]: "charlie"}
这使得进行字符串比较变得非常具有挑战性。任何想法为什么这甚至是一个问题或该怎么办?
一般来说,在 Javascript 中,上下文必须是一个对象而不是一个原语 (link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)。想必,contacts
只是一个字符串数组,因此在每个 div 标签中,这些字符串都被装箱(即转换为引用类型,在本例中为 String 对象)。这就是您在这里记录的内容 - String 对象,而不是您的原始基元。
您有两个选择:
- 如果你使用
this.valueOf()
它会给你原始字符串。
- 或者,考虑使联系人成为对象数组(例如
[{value: 'nameOne'}, ...
])。这样,您就可以替换{{this}}
with {{value}}
and this
在您的事件处理程序中,将以您提供的相同格式返回对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)