【问题标题】:Handlebars linkTo renders empty link车把 linkTo 呈现空链接
【发布时间】:2013-06-08 16:21:30
【问题描述】:

我遇到了一个奇怪的情况,使用 Ember 和 Handlebars。我有一张记录表。用户应该单击任何记录并被重定向到项目详细信息——这是一个非常常见的用例。

但是,Ember 无法正确呈现链接。当我通过 linkTo 标记仅包装单个单词或元素时它可以工作,但当我包装整个表格行时它不起作用。

{{#each item in controller.content}}
    {{#linkTo "detail" item}}
        <tr>
            this is part of the link, correctly
            <td>and this is not</td>
            <td>{{item.someInfo}}</td> <!-- this neither -->
        </tr>
    {{/linkTo}}
{{/each}}

当我希望整个 tr 用作链接时,我该如何解决这个问题?

【问题讨论】:

  • 您可能应该在td 内呈现链接,而不是在链接内呈现tr &gt; td
  • 我需要整行(tr,作为块元素)充当链接的角色,而不仅仅是单个 tds 的文本字段。
  • 一个linkTo 总是会渲染一个a 元素,你想在这里使用的是action 助手。
  • 你是对的。但是,为什么linkTo生成的a元素不能包含复杂的元素结构,比如tr
  • @PavelS。关于{{linkTo}} 生成的元素类型,您可以通过tagName 将其从a 更改为td,方法是执行{{linkTo 'someRoute' someModel tagName=td}} body of td goes here {{/linkTo}}... 并不是最好的解决方案,因为linkTo 的目的是link...to 东西,如果你替换它,你将没有锚行为(状态栏中的 url、鼠标指针等).. 只是把它扔在那里如何更改生成的元素的标签

标签: ember.js handlebars.js


【解决方案1】:

表中应仅包含 &lt;tr&gt; 字段,&lt;tr&gt; 字段中应仅包含 &lt;td&gt; 字段。您正在尝试在表格行之外添加一个 ember 标记(和一个锚点),这不应该在表格中完成。

如果您希望在单击表格时完成某些操作,请向该行添加一个操作。像下面这样的东西应该可以工作。

<tr {{action 'details' on="click"}}>

details 当然会成为相应控制器中的一个函数,您可以从该函数转换到任何您喜欢的位置。

【讨论】:

  • 感谢您的回答。我试过了,它似乎工作。但是,我无法转换到单击的特定项目的详细信息。如何执行“参数化”转换?
  • 看看the api。如果还有什么不清楚的,请告诉我。
  • 谢谢,我知道了 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2021-09-02
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多