简体   繁体   English

“Foreach”循环抛出错误

[英]“Foreach” loop throw an error

It's look like easy but I don't understand. 它看起来很简单,但我不明白。 So I have HTML 所以我有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>

And my js file with viewModel 和我的js文件一起使用viewModel

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

So foreach: 'stories' is not working, that is problem. 所以foreach:'故事'不起作用,那就是问题。 Console show me that 控制台告诉我

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

The exception is being thrown because of your second foreach : 因为你的第二次foreach而被抛出异常:

<div class="ui segment" data-bind="foreach: {data: stories.strings, as: 'string'}">
    <p data-bind="text: string"></p>
</div> 

Because you are in the context of the "stories" writing stories.strings throws because there is no stories property inside the stories items so you just need to write strings : 因为你是在写stories.strings的“故事”的背景下。因为stories项中没有stories属性所以抛出因为你只需要写strings

<div class="ui segment" data-bind="foreach: { data: strings, as: 'string' }">
    <p data-bind="text: string"></p>
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM