【发布时间】:2018-03-06 12:01:41
【问题描述】:
我尝试使用 stateparams 将 ng-repeat 列表中单击项目的数据传递到一个新视图,该视图显示详细信息列表/该项目(员工)的数据,我已经能够做到,但仅适用于顶级数据属性,不适用于这些项目的子数组中的数据。
除了使用 stateparams(我不确定这是否是正确的方法)之外,我还能如何做到这一点,以便可以在新状态/视图中显示如下数据,包括每个的详细信息员工的付款,我想在表格中重复吗?
员工服务:
app.service('employeesService', function() {
var employees = [
{
id: '21101994',
icon: 'img/icon.png',
iconAlt: 'N C Image',
title: 'Mr',
firstName: 'N',
lastName: 'C',
dateOfBirth: '21/10/1994',
niNumber: 'JZ123456D',
jobTitle: 'Web Developer',
department: 'Development',
joinDate: '18/04/2017',
leaveDate: '18/04/2017',
email: 'example@mail.com',
phonePrimary: '07123 456789',
phoneSecondary: '07123 456789',
menu: 'ncMenu',
employeePayments: [
{
id: 1,
code: 'TEST',
paymentType: '',
hours: '',
zeroiseHours: false,
partPay: false,
rate: '',
employerPercentage: '',
pay: '',
paidPer: '',
fromDate: '',
sequence: '',
employerPension: '',
csaReference: '',
suspend: false,
netToGross: false,
requiredTotal: '',
paidToDate: '',
protectedNet: '',
arrearsCarried: ''
},
{
id: 2,
code: 'TEST',
paymentType: '',
hours: '',
zeroiseHours: false,
partPay: false,
rate: '',
employerPercentage: '',
pay: '',
paidPer: '',
fromDate: '',
sequence: '',
employerPension: '',
csaReference: '',
suspend: false,
netToGross: false,
requiredTotal: '',
paidToDate: '',
protectedNet: '',
arrearsCarried: ''
},
]
},
{
id: '1',
icon: '',
iconAlt: 'Employee 2 Image',
title: 'Mr',
firstName: 'A',
lastName: 'Z',
dateOfBirth: '01/01/2000',
niNumber: 'JZ123456D',
jobTitle: 'Job Title',
department: 'Testing',
joinDate: '01/01/2017',
leaveDate: '01/01/2017',
email: 'example@mail.com',
phonePrimary: '07000 123456',
phoneSecondary: '0151 123456',
menu: 'employee2Menu'
},
]
var getEmployees = function() {
return employees;
}
return {
getEmployees: getEmployees
}
-
员工详细信息的当前状态(单击我要将数据传递到的位置):
.state('employees/employeeDetails', {
url: '/employees/employeeDetails/:employeeId/:icon/:iconAlt/:title/:firstName/:lastName/:dateOfBirth/:niNumber/:jobTitle/:department/:joinDate/:leaveDate/:email/:phonePrimary/:phoneSecondary/:employeePayments',
templateUrl: 'pages/employees/employeeDetails.html',
params: {
employeeId: null,
icon: null,
iconAlt: null,
title: null,
firstName: null,
lastName: null,
dateOfBirth: null,
niNumber: null,
jobTitle: null,
department: null,
joinDate: null,
leaveDate: null,
email: null,
phonePrimary: null,
phoneSecondary: null,
employeePayments: null
},
controller: 'employeeDetailsController'
})
-
employeeDetailsController:
app.controller('employeeDetailsController', function($scope, $state, $stateParams, $document, employeesService) {
$scope.employeeId = $stateParams.employeeId;
$scope.icon = $stateParams.icon;
$scope.iconAlt = $stateParams.iconAlt;
$scope.title = $stateParams.title;
$scope.firstName = $stateParams.firstName;
$scope.lastName = $stateParams.lastName;
$scope.dateOfBirth = $stateParams.dateOfBirth;
$scope.niNumber = $stateParams.niNumber;
$scope.jobTitle = $stateParams.jobTitle;
$scope.department = $stateParams.department;
$scope.joinDate = $stateParams.joinDate;
$scope.leaveDate = $stateParams.leaveDate;
$scope.email = $stateParams.email;
$scope.phonePrimary = $stateParams.phonePrimary;
$scope.phoneSecondary = $stateParams.phoneSecondary;
$scope.employeePayments = $stateParams.employeePayments;
【问题讨论】:
-
为什么不直接传递一个id,然后通过查询数组来检索对象呢?最终,根据数据长度及其数量,您的 url 会变得太长..
-
这正是我要问的问题
-
我在问怎么做
-
是的...我不确定你在说什么。您建议改用共享服务,但在这个问题中,我想知道如何使用共享服务和这些数据来传递对象
-
抱歉,不清楚你到底想做什么,也不需要像这样使用大写字母,你的问题很不清楚你到底想要达到什么目标,因为你可能注意到有很多达到结果的方法。尽管如此,我还是纠正了我的错误并在下面发布了我的答案。
标签: javascript angularjs arrays json