这看起来很简单,但我不明白。所以我有 HTML
<div class="ui three column grid" data-bind="foreach: stories">
<div class="column">
<div class="ui stacked segment">
<div class="ui three column grid center aligned">
<div class="column">
<div class="ui buttons icon">
<div class="ui button small">
<i class="icon plus"></i>
</div>
</div>
</div>
<div class="column">
<div class="ui labels circular">
<div class="ui label">
124124
</div>
</div>
</div>
<div class="column">
<div class="ui buttons icon">
<div class="ui button small">
<i class="icon minus"></i>
</div>
</div>
</div>
</div>
<div class="ui grid center aligned">
<div class="row">
<div class="column">
<h1>yo</h1>
</div>
</div>
<div class="row">
<div class="column">
<div class="ui segment" data-bind="foreach: {data: stories.strings, as: 'string'}">
<p data-bind="text: string"></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
还有我的带有 viewModel 的 js 文件
define(['knockout', 'dataContext'], function (ko, dataContext) {
viewModel = {
activate: activate,
main: ko.observable(true),
stories: ko.observableArray([]),
};
return viewModel;
function activate() {
return dataContext.getStories().then(function(data) {
console.log(data.results);
_.each(data.results, function(result) {
console.log(result.strings);
viewModel.stories.push({strings: result.strings});
});
console.log(viewModel.stories());
});
}
})
所以 foreach: 'stories' 不起作用,这就是问题所在。控制台告诉我
"Unable to process binding "foreach: function (){return stories }"
Message: Unable to process binding "foreach: function (){return {data:stories.strings,as:'string'} }"
Message: stories is not defined;"
最佳答案
异常被抛出是因为你的第二个foreach
:
<div class="ui segment" data-bind="foreach: {data: stories.strings, as: 'string'}">
<p data-bind="text: string"></p>
</div>
因为您在“故事”的上下文中编写 stories.strings
抛出,因为 stories
项中没有 stories
属性所以你只需要编写 strings
:
<div class="ui segment" data-bind="foreach: { data: strings, as: 'string' }">
<p data-bind="text: string"></p>
</div>
关于javascript - "Foreach"循环抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218423/