用子句更改keypath

时间:2015-04-26 16:15:52

标签: ractivejs

我有以下模板:

{{#each Posts}}
{{#with { Post: this } }}
  <h2 on-click="doSomething">{{Title}}</h2>
  ...
{{/with}}
{{/each}}

当我点击标题并调用doSomething时,我在事件密钥路径中得到"${{Post:Posts-0}}"。但是我需要访问post keypath:&#34; Posts.0&#34;修改它的一些属性。实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在Ractive中使用{{#with { a: b } }}块进行别名有一些限制,因为它不是真正的别名,它只是创建一个带有对象文字的表达式。这是一项必要的增强功能,可以使用{{#each Post in Posts}}{{#each Posts as Post}}等内容提供真正的别名。

就您今天所做的事情而言,您可以将关键路径添加到with块:

{{#with { Post: this, keypath: @keypath } }}

然后传入:

  <h2 on-click="doSomething:{{keypath}}">{{Title}}</h2> 

或通过this.event.context.keypath访问活动。有关这两个方面的实施情况,请参阅http://jsfiddle.net/w0npbnrz/

您也可以使用{{#each Posts:p}},在这种情况下,您可以通过'Posts.' + this.event.index.p获取密钥路径。