Я немного продвинулся в своем изучении.
Если структура данных о резервировании содержит объекты, в которых есть поле id — которое обозначает номер помещения и date — которое обозначает дату, то привязку к ячейкам можно сделать следующим образом:
В javascript'е вставить следующий код:
$scope.showreserv = function (room, day) {
var x = $filter('filter')($scope.reservs, { id: room.id, date: day });
if (x.length > 0) return x[0].type;
else return "-";
}
а в html'е следующий:
<tr ng-repeat="room in stores|orderBy:'name'">
<td ng-click="test(room)">{{room.id}} {{room.name}}</td>
<td ng-repeat="day in days">{{showreserv(room,day)}}</td>
</tr>
коллекция stores содержит информацию о пемещениях, поле id — идентификатор, name — название
коллекция days — содержит дни, начиная с сегодня. (в массиве содержатся целые числа timestamp)
вот этот кусок html кода
<td ng-repeat="day in days">{{showreserv(room,day)}}</td>
повторяется для каждого помещения и дня и при каждой привязке вызывается функция showreserv. Ее код — выше.
фильтрация — обалденная штука (хотя додумался как с ней работать не сразу)
var x = $filter('filter')($scope.reservs, { id: room.id, date: day });
здесь $scope.reservs — массив всех резервирований.
а { id: room.id, date: day } — обозначает что в результате должны остаться только те элементы, у который поля id и date соответствуют входным параметрам функции привязки.
тут у меня был один ньюанс: фильтр не работал, пока дата в коллекциях была представлена объектом Date. видимо, разные экземпляры не сравнивались. когда вместо объектов Date я стал использовать целое число timestamp — все встело на свои места.
Теперь мне нужно сделать следующие вещи:
1. отображать в ячейках таблицы разные шаблоны для каждого значения типа резервирования и при отсутствии резервирования.
2. привязать к ячейкам обработчик клика
3. сделать так, чтобы данные отправлялись на сервер.