我正在使用* ngFor迭代数组。显示的数据类似于新的Feed,用户可以在其中提交更新,并显示用户名,状态,类似按钮和收藏夹按钮。我正在处理这个功能,该功能会在点击收藏夹按钮后为“收藏夹”添加状态。我遇到的问题是确保点击收藏夹按钮的状态会将该特定状态添加到收藏夹中。我能想到这样做的最好方法是在该用户的状态数组中找到状态描述的索引,并使用它来指定要添加的状态。
对象的结构如下所示:
users.feed.description
其中users = User,feed = Status,description = status description
我能够做的是通过以下方式指定用户和状态:
users[0].feed[0].description
我认为需要做的是找到所选描述的索引并将其作为值分配给Feed:
users[0].feed[i].description
我知道在addFavorites函数中我需要一些for循环的东西,但我似乎无法正常运行。我希望这是足够的信息。
我的addFavorites功能目前是:
addToFavorites(){
console.log('Adding to Favorites ' + this.users[0].feed[0].description);
this.favorite = this.favoritesprovider.addFavorites(this.users[0].feed[0].description);
this.toastCtrl.create({
message: this.users[0].feed[0].description + ' has been added to your favorites!',
duration: 3000
}).present();
}
它只会添加索引为0的描述(因为这是定义的内容)。我知道我的for循环应该反映类似于
的东西function findWithAttr(array, attr, value) {
for(var i = 0; i < array.length; i += 1) {
if(array[i][attr] === value) {
return i;
}
}
return -1;
}
我是从How to get index of object by its property in javascript得到的,但我无法弄清楚如何使事情正常运作。
感谢任何帮助
答案 0 :(得分:1)
如果您使用的是*ngFor
,那么您应该可以访问当前索引,然后能够data bind
到div。见下文
<!-- Angular -->
<div class="feed">
<div class="feed-item" *ngFor="let feedItem of feedItems; let i = index" [attr.data-index]="i">
{{i}} {{feedItem}}
</div>
</div>
然后,您可以将data-index
属性设为i
。