angularjs - 如何处理数组(或手动处理 ng-repeat)?
问题描述
使用:AngularJS v1.3.15
免责声明:我对 angularjs 几乎一无所知。但是我“被迫”使用它,因为它被用于我正在使用的框架中。
我想修改一些看起来像这样的 html/angularjs:
<ul>
<li ng-repeat="provider in model.externalProviders">
<a class="pure-button" href="{{provider.href}}">{{provider.text}}</a>
</li>
</ul>
我可以看到这里发生了什么...... ng-repeat
导致对model.externalProviders
集合/数组的元素进行迭代。<a>
它工作正常,但我无法根据提供者控制内容/样式化单个元素。我想<a>
根据类型更改元素的内容/外观。
模型的相关部分如下所示:
"externalProviders": [
{
"type": "Google",
"text": "Sign-in with Google",
"href": "https://localhost:44302/external?provider=Google&signin=04e029cf1018403f1757b097fbfb1ecb"
}
],
所以我想也许有一种方法可以按类型从 externalProviders 中“选择”或“挑选”......如果存在该类型,则呈现适当的标记,例如:
<ul>
<!-- if model.externalProviders has item with type=="Google"... -->
<li>
<a class="pure-button button.google" href="<i class="fab fa-google"></i>{{provider.href}}">{{provider.text}}</a>
</li>
<!-- if model.externalProviders has item with type=="Facebook"... -->
<li>
<a class="pure-button button.facebook" href="<i class="fab fa-facebook"></i>{{provider.href}}">{{provider.text}}</a>
</li>
</ul>
不确定正确的搜索词是什么,所以我很难找到任何可能解决我的问题的信息。AngularJS可以做到这样的事情吗?如果是这样,我将如何实现它?
解决方案
正如@Major Sam 评论的那样,这ngClass
可能适用于不太简单的场景,但我什至不需要走那么远。幸运的是,我可以控制 type 属性和 css,因此我可以使我的 type 和 css 选择器与图标的字体真棒图标类选择器相匹配。这有效:
<li ng-repeat="provider in model.externalProviders">
<a class="pure-button button-{{provider.type}}" href="{{provider.href}}"><i class="fab fa-{{provider.type}}"></i>{{provider.text}}</a>
</li>
缺点:不允许您更改实际标记(例如,如果 font awesome 没有该提供程序的图标,则不包括图标)。
推荐阅读
- sql - SQL Sum count of product by Member 和产品 YTD 的产品计数
- html - 元素内不同数量的 div 列的水平滚动
- postgresql - 我应该使用复合主键来加快 PostgreSQL 中基于时间戳的选择吗?
- docker - 使用 docker 命令将 Jager-agent 配置为 FluentD 等 UDP 服务器
- r - R:以第一个索引为起点的滚动标准偏差并忽略 NA
- laravel - 在查询中过滤(搜索引擎)的最佳方法
- c++ - 在 Sql server time 数据类型中保存 PC 时间并在 QT 中读回
- python - 如何将变量值从 Python 脚本传输到 Bash 脚本
- linux - linux -x86 是否有设备树(在哪里)?
- sql - 如果sql数据库中的表中存在少量列,如何标记是