顾名思义,keypath 表示 key 的路径,如 user.profile.name
。
渲染模板需要数据,而数据通常带有层级结构,比如用户列表:
{
data: {
users: [
{
name: 'Jack',
age: 1
},
{
name: 'John',
age: 2
},
{
name: 'Mike',
age: 3
}
]
},
methods: {
select: function (keypath) {
console.log(keypath, this.get(keypath));
}
}
}
渲染用户列表时,我们给每个用户添加一个按钮,并且希望点击按钮能知道是点了哪个用户:
{{#each users}}
<div>
{{name}}
</div>
<button on-click="select($keypath)">
Select
</button>
{{/each}}
当我们点击第二个用户时,会打印出如下数据:
users.1 Object {name: "John"}
keypath 真正做到了视图映射数据。
模板中每个节点都有对应的 keypath,因此类似点击监控的需求做起来非常方便。