【发布时间】:2015-02-25 01:56:03
【问题描述】:
我的范围内有以下数据模型。
$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"}
];
我要做的是输出每天哪个员工关店,所以基于以上我的理想输出是。
Alex 星期一关门了
布拉德星期三关门了
Cam 星期四关门了
Alex 周五关门了
我遇到的问题是closedShop 数据只包含staffID,如何根据staff.id 数据查找此人名?
我在下面有一个工作示例,但对于少数员工来说,这不是一个可扩展的解决方案?
'use strict';
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"}
];
}]);
<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-if="staff[0].id==closed.staffID">{{staff[0].name}}</span>
<span ng-if="staff[1].id==closed.staffID">{{staff[1].name}}</span>
<span ng-if="staff[2].id==closed.staffID">{{staff[2].name}}</span>
closed the shop on {{closed.day}}
</div>
</div>
</div>
让这个工作的最佳方法是什么?
【问题讨论】:
-
一个可能的解决方案是将您的员工模型更改为一个对象,其键是员工 ID。这将变为 $scope.staff = {1: {name: "Alex"}, etc},然后在您的循环中,您可以通过执行 staff[closed.staffId].name 来简单地检索员工。这也消除了额外循环在数组中查找正确员工的必要性,因为您可以在地图中直接查找。
标签: javascript angularjs html angularjs-scope