首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用link-to从数组生成动态语句

使用link-to从数组生成动态语句
EN

Stack Overflow用户
提问于 2014-10-25 02:51:16
回答 2查看 234关注 0票数 1

假设我有一个这样的数组:

代码语言:javascript
运行
复制
var values = [
  Ember.Object.create({id: 1, name: 'One'}),
  Ember.Object.create({id: 2, name: 'Two'}),
  Ember.Object.create({id: 3, name: 'Three'})
];

我想创建一个链接到每个不同对象的句子。输出将生成如下内容:

代码语言:javascript
运行
复制
{{link-to 'One' 'my-route' 1}}, {{link-to 'Two' 'my-route' 2}}, and {{link-to 'Three' 'my-route' 3}}

它将输出一个句子,其中每个单词都链接到不同的路径:

代码语言:javascript
运行
复制
One, Two, and Three

有没有可能动态地这样做呢?如果我只是迭代数组(see example),我知道如何创建链接的动态列表:

代码语言:javascript
运行
复制
{{#each item in values}}
  <li>{{link-to item.name 'my-route' item.id}}</li>
{{/each}}

但这并不能让我灵活地创建一个以'and‘结尾的逗号分隔的列表。

EN

回答 2

Stack Overflow用户

发布于 2014-10-25 04:04:49

我会创建一个计算属性来提供一些额外的信息。假设values是控制器上的一个属性:

代码语言:javascript
运行
复制
listValues: function() {
    return this.get('values').map(function(item, index, array) {
        return {
            item: item,
            isLastItem: index === array.length - 1
        };
    });
}.property('values.[]')

然后,在您的模板中:

代码语言:javascript
运行
复制
{{#each listValues}}
    {{#if isLastItem}}
        and <li>{{link-to item 'my-route' item.id}}</li>
    {{else}}
        {{! Notice the trailing comma }}
        <li>{{link-to item 'my-route' item.id}}</li>,
    {{/if}}
{{/each}}
票数 2
EN

Stack Overflow用户

发布于 2014-10-25 04:16:51

这有点麻烦,但您可以创建一个计算属性,该属性包含除最后一项之外的所有项,并创建另一个计算属性来返回最后一项。

然后,在代码中对除最后一项之外的所有项进行#,然后执行and {{lastItem}}。例如:

代码语言:javascript
运行
复制
{{#each item in allButLast}}
  {{link-to item.name 'test' item.id}}, 
{{/each}}

and {{link-to lastItem.name 'test' lastItem.id}}

下面是一个jsbin示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26554405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档