Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 使用另一个对象按id查找对象';具有ng repeat的对象数组中的s id属性_Javascript_Angularjs_Html_Angularjs Scope - Fatal编程技术网

Javascript 使用另一个对象按id查找对象';具有ng repeat的对象数组中的s id属性

Javascript 使用另一个对象按id查找对象';具有ng repeat的对象数组中的s id属性,javascript,angularjs,html,angularjs-scope,Javascript,Angularjs,Html,Angularjs Scope,我的范围内有以下数据模型 $scope.staff = [ {"id": "1","name": "Alex"}, {"id": "2","name": "Brad"}, {"id": "3","name": "Cam"} ]; $scope.closedShop =[ {"day": "monday","staffID": "1"}, {"day": "wed

我的范围内有以下数据模型

        $scope.staff = [
        {"id": "1","name": "Alex"},
        {"id": "2","name": "Brad"},
        {"id": "3","name": "Cam"}
    ];
        $scope.closedShop =[
            {"day": "monday","staffID": "1"},
            {"day": "wednesday","staffID": "2"},
            {"day": "thursday","staffID": "3"},
            {"day": "friday","staffID": "1"}
        ];
我想做的是输出工作人员每天关闭的商店,所以基于以上我的理想输出将是

亚历克斯星期一关门了

布拉德周三关门了

Cam周四关闭了这家商店

亚历克斯星期五关门了

我遇到的问题是closedShop数据只包含staffID,如何根据staff.id数据查找该数据以获取人员姓名

我在下面有一个工作示例,但是,这不是一个可扩展的解决方案,对于少数员工来说

“严格使用”;
var-app=angular.module('app',[]);
app.controller('MainCtrl',['$scope',函数($scope){
$scope.staff=[
{“id”:“1”,“name”:“Alex”},
{“id”:“2”,“name”:“Brad”},
{“id”:“3”,“name”:“Cam”}
];
$scope.closedShop=[
{“日”:“星期一”,“斯塔夫”:“1”},
{“day”:“星期三”,“staffID”:“2”},
{“日”:“星期四”,“斯塔夫”:“3”},
{“day”:“friday”,“staffID”:“1”}
];
}]);

{{staff[0].name}
{{staff[1].name}
{{staff[2].name}
该店于{{关闭日}关闭

您可以添加到控制器函数以获取staffById

$scope.getStaff = function(id){find and return}
并改变您的看法:

<div ng-app="app">
    <div ng-controller="MainCtrl">
        <div ng-repeat="closed in closedShop">
            <span>{{getStaff(closed.staffID)}}</span> 
            closed the shop on {{closed.day}}
            </div>
    </div>
</div>

{{getStaff(closed.staffID)}
该店于{{关闭日}关闭

可能这不是您所期望的,但工作正常:

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="MainCtrl">
    <div ng-repeat="closed in closedShop">

        <span ng-repeat="s in staff" ng-if="s.id==closed.staffID">
          {{s.name}}
        </span>
        closed the shop on {{closed.day}}
        </div>
</div>
</div>
<script src="app.js"></script>
 var app = angular.module('app', []);
    app.controller('MainCtrl', ['$scope', function ($scope) {
        $scope.staff = [
        {"id": "1","name": "Alex"},
        {"id": "2","name": "Brad"},
        {"id": "3","name": "Cam"}
    ];
        $scope.closedShop =[
            {"day": "monday","staffID": "1"},
            {"day": "wednesday","staffID": "2"},
            {"day": "thursday","staffID": "3"},
            {"day": "friday","staffID": "1"}
        ];
    }]);

看这个

这部分是钱:

<span ng-init="person = (staff | filter:{id:closed.staffID}:true)[0]">{{person.name}}</span>

{{person.name}
该店于{{关闭日}关闭

一个可能的解决方案是将您的员工模型更改为一个对象,其键为员工id。这将成为$scope.staff={1:{name:“Alex”},etc},然后在循环中,您只需执行staff[closed.staffId].name即可检索员工。这还消除了在数组中查找正确人员的附加循环的必要性,因为您可以在映射中直接查找。