Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度表达式从对象数组中的相等属性获取对象的属性_Javascript_Arrays_Angularjs_Angularjs Scope_Expression - Fatal编程技术网

Javascript 角度表达式从对象数组中的相等属性获取对象的属性

Javascript 角度表达式从对象数组中的相等属性获取对象的属性,javascript,arrays,angularjs,angularjs-scope,expression,Javascript,Arrays,Angularjs,Angularjs Scope,Expression,很抱歉标题不好,我想不出合适的标题 无论如何,我有一个对象数组,它们都列在一个ng repeat中。然后,我想在另一个对象数组中找到该对象,该数组具有与上面相同的id,并获取其另一个属性 我希望此示例代码将简化一些事情: $scope.discussions = [ { recipient: { id: 'theid' }, messages: [] } ]; $scope.friends = [

很抱歉标题不好,我想不出合适的标题

无论如何,我有一个对象数组,它们都列在一个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>


我的建议是在角度控制器中定义一个函数,该函数可以将单个
讨论
$scope.friends
中的匹配元素相匹配。该函数可能如下所示(这可以改进,但它可以完成任务):

然后,在html中,您可以对ng repeat中的元素调用该函数,如下所示:

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

在线={{findMatchingId(讨论)}

看到这个

你可以使用Javascript来帮助你确定
friends
中ID匹配的第一个元素/我建议调用angular controller中定义的函数,在friends数组中查找匹配元素。问题是我要分析的布尔值将发生很大变化,我想更新视图instantlyIt的所有更改,但它不会像angular那样动态更新,因此,如果值发生变化,视图将保持未更新状态/@user3127242我更新了plnkr,允许您更改朋友的id。我不确定您遇到了什么样的更新问题,但plnkr似乎可以很好地更新视图。我有讨论。收件人。\u id,我想找到相应的朋友并获取其联机状态。然后,在状态更新后,我希望它在视图中立即更改,直到页面刷新完成后才显示/@用户3127242如果您试图基于
联机
属性显示/隐藏,则应使用。像这样
Online={{findMatchingId(discussion)}}
我对此没有问题,但是属性在init上在线更新,然后视图中没有出现任何更改/
ng-class="{online: friends.some(fr => fr.id == discussion.recipient._id).online }"
$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;
};
<div ng-repeat="discussion in discussions">
     <div>Online = {{findMatchingId(discussion)}}</div>
</div>