我有一个 Angular Controller 方法,可以计算等待就座的人数(比如在餐厅)。模型包含设置为 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;
};
}
该方法适用于页面加载,并且更改就座下拉菜单可以正确反射(reflect)属性(就座人数),但是当您再次更改下拉菜单时,更新的计数器不会反射(reflect)正确的数字。我无法弄清楚为什么计数器没有正确改变,因为逻辑似乎都很合理。
有人能指出我正确的方向吗?
提前致谢。
最佳答案
问题是,当您将预订从“入座”更改为“未入座”时,booking.seated 模型的值更改为字符串“false”,而不是 bool 值 false。任何不为空的字符串都将计算为 true,这就是 toSeat() 内部发生的情况。
Boolean("false"); // == true
Here is your fiddle true 和 false 替换为字符串“true”和“false”,条件现在检查是否 booking.seated ===“true”
关于user-interface - Angular 计数未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011871/