2

私は着席を待っている人の数を数えるAngularコントローラーメソッドを持っています(レストランで言ってください)。モデルには、true または false に設定されたプロパティが含まれています。このメソッドはモデルを繰り返し処理し、「着座」プロパティをチェックして、true であるすべてのモデルをカウントする必要があります。

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;
};

}

メソッドはページの読み込み時に機能し、着席ドロップ メニューを変更するとプロパティ (着席人数) が正しく反映されますが、ドロップ ダウンを再度変更すると、更新されたカウンターは正しい数を反映しません。ロジックはすべて正しいように見えるため、カウンターが正しく変更されない理由を理解できませんでした。

誰かが私を正しい方向に向けることができますか?

事前にt​​hx。

4

1 に答える 1

2

問題は、予約を「着席」から「着席なし」に変更すると、booking.seated モデルの値がブール値 false ではなく文字列「false」に変更されることです。空でない文字列はすべて true と評価されます。これが toSeat() の内部で行われています。

Boolean("false");  // == true

true と false を文字列 "true" と "false" に置き換えたフィドルを次に示します。条件は今、booking.seated === "true" かどうかをチェックしています。

于 2013-06-09T17:36:21.900 に答える