勤怠情報が表示させるWebappをSpring にてJava とAngularJS にて作っています。勤怠勤怠勤怠、attendanceのデータが表示しているhtmlの一覧が以下のようにあります。
日付(date) | 名前 (lastname firstname) | 出勤 | 退勤
上記をクリックすると(Angularjs のng-show にて)以下の情報が表示されるようにしたいのです。
交通手段: (vehicle)
条件としてはattendanceのstaff.id とdataのstaff.id が同じ(紐付け)で、日付が同じことが要求されます。
問題としてはattendanceのコントローラしたに以下のdataのような連想配列を function(dataList) {}にて取り出した時に
staff.id とdate キーとして連想配列を作りたいのですが、エラーが出てしまいます。
「Cannot read property '2016-5-27' of undefined」
var attendance ={ "obj1":{"date":"2016-05-27","staff":{"id":"01","dep":"sales", "firstname":"taro", "lastname":"honda"},"出勤":"09:00:00","退勤":"18:00:00"}, "obj2":{"date":"2016-05-27","staff":{"id":"02","dep":"engineer","firstname":"ryo", "lastname":"suzuki"},"出勤":"10:00:00","退勤":"20:00:00"}, "obj3":{"date":"2016-05-27","staff":{"id":"06","dep":"engineer","firstname":"hanako", "lastname":"matsumoto"},"出勤":"09:00:00","退勤":"18:00:00"}, "obj4":{"date":"2015-01-02","staff":{"id":"07","dep":"sales","firstname":"yuki", "lastname":"hara"},"出勤":"10:00:00","退勤":"20:00:00"} }; var dataList ={ "data1":{"date":"1464274800000","name":{"first":"fist1","last":"last1"},"vehicle":"car", "staff":{"id":"01","dep":"sales", "firstname":"taro", "lastname":"honda"}}, "data2":{"date":"1464274800000","name":{"first":"fist2","last":"last2"},"vehicle":"car", "staff":{"id":"02","dep":"engineer","firstname":"ryo", "lastname":"suzuki"}}, "data3":{"date":"1464274800000","name":{"first":"fist3","last":"last3"},"vehicle":"train","staff":{"id":"03","dep":"bookkeeper","firstname":"ken", "lastname":"hitachi"}}, "data4":{"date":"1464274800000","name":{"first":"fist4","last":"last4"},"vehicle":"train", "staff":{"id":"04","dep":"engineer","firstname":"sho", "lastname":"kikuchi"}}, "data5":{"date":"1465225200000","name":{"first":"fist5","last":"last5"},"vehicle":"train", "staff":{"id":"01","dep":"sales","firstname":"taro", "lastname":"honda"}} }; document.write(key, ':', value+"<>"); for (var i = 0; i < data.length; i++) { var data = data[i]; var d = new Date(data.date); yyyy = d.getFullYear(); mm = d.getMonth()+1; ss = d.getDate(); var keydate = yyyy+"-"+mm+"-"+ss; if ($scope.MapByStaffId[data.staff.id][keydate] == null) { $scope.MapByStaffId[data.staff.id][keydate] = {}; } if($scope.MapByStaffId[data.staff.id][keydate][data.vehicle] == null) { $scope.MapByStaffId[data.staffDto.id][keydate][data.vehicle] = { vehicle: angular.copy(data.vehicle) }; } }
あなたの回答
tips
プレビュー