【问题标题】:ng-repeat different values based on urlng-repeat 基于 url 的不同值
【发布时间】:2016-10-15 03:16:05
【问题描述】:

我正在尝试根据当前 url 从对象数组中重复值。假设当我的 url 是“localhost/#/scores/javelin”时,我只想从我的数组中重复 javelin 分数。

我的数组如下所示:

$scope.ppl = 
            [
                {
                    firstname: 'Donald',
                    lastname: 'Trump',
                    from: 'USA',
                    run100m: ['1s','2s','3s'],
                    javelin: ['50m','20m','44m']
                },
                {
                    firstname: 'Foo',
                    lastname: 'Bar',
                    from: 'SWE',
                    run100m: ['1s','2s','3s'],
                    javelin: ['80m','10m','54m']
                },
            ];

将有超过 15 种运动类型和人数不详。我不知道如何在不制作大量数组的情况下做到这一点。我一直在尝试各种方法来做到这一点,但没有任何效果。

这是我重复的样子:

<tr ng-repeat="x in ppl">
        <td>{{x.firstname}}</td>
        <td>{{x.lastname}}</td>
        <td>{{x.from}}</td>
        <td><span ng-repeat="y in x.run100m track by $index">{{ y }}</span>
        </td>
        <td><button>edit</button></td>
    </tr>

这段代码是这样工作的,但只适用于 run100m。如果我将 url 更改为 /javelin,我希望标枪得分在 span 内。

我能做到这一点的唯一方法就是我创造

<span ng-show=" URL == javelin"></span>

等等。但我不确定这是否如此聪明。所以我的问题是我怎样才能使这项工作变得聪明? ppl 结构不必是那样,但如果我可以将所有信息存储在 1 个变量中,那就太好了。

哦,我忘了说我知道如何在控制器中获取 url。这不是这里的问题。

所以我想根据这个变量重复:

var path = $routeParams.sport;

【问题讨论】:

  • 所有关于为每个级别使用一致的属性名称和值类型。运动的名称不应该是键,它应该是更通用的值,例如 sport:'javelin'

标签: javascript angularjs arrays angularjs-ng-repeat


【解决方案1】:

在表达式中使用属性访问器:

<tr ng-repeat="x in ppl">
    <td>{{x.firstname}}</td>
    <td>{{x.lastname}}</td>
    <td>{{x.from}}</td>
    <td><span ng-repeat="y in x[eventType] track by $index">{{ y }}</span>
    </td>
    <td><button>edit</button></td>
</tr>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2016-08-28
    • 2018-06-11
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多