Количество углов не обновляется

У меня есть метод углового контроллера, который подсчитывает количество людей, ожидающих, чтобы сесть (скажем, в ресторане). Модели содержат свойство, установленное в 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 === "истина"

Другие вопросы по тегам