我的视图模型中有这个可观察的数组。
this.months = ko.observableArray(['Jan', 'Feb', 'Mar',...]);
如果我尝试每个月展示一次,就像这样 -
<!-- ko foreach: { data: months, as: 'month' } -->
<span data-bind="text: month"></span>
<!-- /ko -->
它会抛出错误 -
Uncaught ReferenceError: Unable to process binding "text: function (){return month }"
Message: month is not defined
如果我试试这个,
<!-- ko foreach: months -->
<span data-bind="text: $data"></span>
<!-- /ko -->
显示[对象对象]
我做错了什么?
感谢。
答案 0 :(得分:2)
我不知道你做错了什么,但这很好用。您的months
看起来不像您认为的那样。
vm = {};
vm.months = ko.observableArray(['Jan', 'Feb', 'Mar']);
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<!-- ko foreach: {data: months, as: 'month'} -->
<span data-bind="text: month"></span>
<!-- /ko -->
答案 1 :(得分:0)
`<span data-bind="text: month"></span>`
希望您提供属性月份的数据。但你的是字符串数组,因此会抛出错误。淘汰赛正在寻找那个阵容中可观察到的月份。
正如罗伊所说,下面应该有效。
<!-- ko foreach: {data: months, as: 'month'} -->
<span data-bind="text: $data"></span>
<!-- /ko -->
或者您可以更改您的可观察数组,以提供以月为属性的可观察数据。
months = [{month:'jan'}, {month:'Feb'}, {month:'Mar'},...]);
确保提供可观察的数组。