Количество углов не обновляется
У меня есть метод углового контроллера, который подсчитывает количество людей, ожидающих, чтобы сесть (скажем, в ресторане). Модели содержат свойство, установленное в true или false. Метод должен выполнять итерации по моделям, проверяя свойство 'seated' и подсчитывать все те, которые являются истинными.
Смотрите простой пример по адресу: http://jsfiddle.net/JoeDredd/nB4tP/
function seatingCtr($scope) {
$scope.bookings = [{
name: 'fred',
seated: true
}, {
name: 'george',
seated: false
}, {
name: 'barney',
seated: false
}];
$scope.toSeat = function () {
var count = 0;
angular.forEach($scope.bookings, function (booking) {
count += booking.seated ? 0 : 1;
});
return count;
};
}
Этот метод работает при загрузке страницы, и изменение раскрывающегося меню "сидя" правильно отражает свойство (количество сидячих людей), однако при изменении раскрывающегося списка на снова обновленный счетчик не отображает правильное число. Я не могу понять, почему счетчик не меняется правильно, так как логика все кажется надежной.
Может кто-то указать мне верное направление?
Спасибо заранее.
1 ответ
Проблема заключается в том, что при изменении бронирования с "Сидящий" на "Не сидящий" значение модели booking.seated изменяется на строку "false" вместо логического false. Любая непустая строка будет иметь значение true, это то, что происходит внутри toSeat().
Boolean("false"); // == true
Вот ваша скрипка, в которой истина и ложь заменены на строки "истина" и "ложь", и теперь условие проверяет, действительно ли booking.seated === "истина"