javascript - Angular 表达式从对象数组中的相等属性获取对象的属性

标签 javascript arrays angularjs angularjs-scope expression

抱歉标题不好,实在想不出合适的。

无论如何,我有一个对象数组,它们都列在一个 ng-repeat 中。然后,我想在另一个对象数组中找到该对象,该对象与上面的对象具有相同的 id,并获得它的另一个属性。

我希望这个示例代码能简化事情:

$scope.discussions = [
    {
        recipient: {
            id: 'theid'
        },
        messages: []
    }
];

$scope.friends = [
    {
        id: 'theid',
        online: false
    }

];

在我看来我有:

<div ng-repeat="discussion in discussions">
    <div>Online = {{//code here}}</div>
</div>

两个都试过了

ng-class="{online: {{friends.some(fr => fr.id == discussion.recipient._id).online}}; }"

ng-class="{online: friends.some(fr => fr.id == discussion.recipient._id).online }"

最佳答案

我的建议是在您的 Angular Controller 中定义一个函数,该函数可以将单个 discussion 匹配到您的 $scope.friends 中的匹配元素。该函数可能看起来像这样(这可以改进,但它完成了工作):

$scope.findMatchingId = function (discussion) {
    var matchingFriend;
    $scope.friends.some(function (friend) {
        if (friend.id === discussion.recipient.id) {
            matchingFriend = friend;
            return true;
        }
        return false;
    });
    return matchingFriend;
};

然后在您的 html 中,您可以像这样在 ng-repeat 中的元素上调用该函数:

<div ng-repeat="discussion in discussions">
     <div>Online = {{findMatchingId(discussion)}}</div>
</div>

查看此 plnkr

关于javascript - Angular 表达式从对象数组中的相等属性获取对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100058/

相关文章:

javascript - 如何使用 jquery 和 ajax 淡入图像

javascript - 在同一页面中拥有多个 React 包对性能的影响

javascript - 使用 expo-constants 和额外属性来 react native Jest 测试

javascript - Angularjs将json数据转换为 "[object Object]"

c - 将值放入结构数组中?

html - 滚动时如何根据可见的内部 div 高度调整外部 div 高度

javascript - 谷歌图表 : how do I change the percentage label color?

java - 仅对正值进行排序,并保留负值及其索引,因为它属于数组

javascript - 获取 NaN 而不是数字/值

javascript - AngularJS 根据 GET 请求将新项目推送到数组