我正在使用 knockout.js 和 moment.js 来计算给定月份的一些值。以下代码按预期工作:
var calendarViewModel = {
selectedMonth: ko.observable(moment().format("M")),
daysInMonth: ko.observable(moment().month(3).daysInMonth())
};
ko.applyBindings(calendarViewModel);
selectedMonth 的返回值为“4”,daysInMonth 的返回值为“30”。
但我想做的是根据 selectedMonth 的当前值(会改变)计算 daysInMonth 的值。我能想到的最好的代码是这样的:
var calendarViewModel = {
selectedMonth: ko.observable(moment().format("M")),
daysInMonth: ko.observable(moment().month(calendarViewModel.selectedMonth() - 1).daysInMonth())
};
ko.applyBindings(calendarViewModel);
我进入Uncaught TypeError: Cannot read property 'selectedMonth' of undefined
控制台。我无法理解的是如何在这种情况下正确引用 selectedMonth 。如果我在 viewModel 之外的其他一些通用变量中创建 selectedMonth ,那么我所做的一切都可以正常工作。
我很确定这与我对 JavaScript 对象的(较差的)理解有关,与库本身无关。