Javascript 使用KnockoutJS和Jade加载json文件

Javascript 使用KnockoutJS和Jade加载json文件,javascript,json,node.js,knockout.js,pug,Javascript,Json,Node.js,Knockout.js,Pug,我有一个通过api加载的json文件。json文件将是一个存储阵列。加载页面时,这是stacktrace中出现的错误: Uncaught ReferenceError: Unable to process binding "foreach: function (){return stores }" Message: stores is not defined 这就是从API返回的json的样子: [ { "store_name": "Aber", "st

我有一个通过api加载的json文件。json文件将是一个存储阵列。加载页面时,这是stacktrace中出现的错误:

Uncaught ReferenceError: Unable to process binding "foreach: function (){return stores }"
Message: stores is not defined
这就是从API返回的json的样子:

[
    {
        "store_name": "Aber",
        "store_wiki_folder": "#F",
        "store_wiki_contact": "#C",
        "store_wiki_access": "#A",
        "store_db": "db:127.2.3.1:9000",
        "sites": [
            {
                "label": "Prod",
                "link": "http://google.com",
                "special_label": "[Admin]",
                "special_link": "http://images.google.com"
            },

            {
                "label": "Train",
                "link": "http://google.com",
                "special_label": "[Admin]",
                "special_link": "http://images.google.com"
            }
        ]
    },

    {
        "store_name": "Academy",
        "store_wiki_folder": "#F",
        "store_wiki_contact": "#C",
        "store_wiki_access": "#A",
        "store_db": "db:127.2.3.1:9000",
        "sites": [
            {
                "label": "Live",
                "link": "http://google.com",
                "special_label": "[Admin]",
                "special_link": "http://images.google.com"
            },

            {
                "label": "Test",
                "link": "http://google.com",
                "special_label": "[Admin]",
                "special_link": "http://images.google.com"
            }
        ]
    }
]
以下是我必须从api中提取并执行ko绑定的内容:

$.getJSON("/api/stores", function(stores) {
    var storesModel = ko.mapping.fromJSON(stores);
    ko.applyBindings(storesModel);
})
我正在使用Jade构建我的布局:

extends layout

block content
   .container(role="main")
       .row
           .col-md-12
               ul(data-bind="foreach:stores")
                   li(data-bind="text: store_name")
我认为这可能与我构建json文件的方式有关。json文件的结构可以更改。

“foreach:stores”
假设您在模型中有一个
stores
属性。 您显示的只是一个数组,没有它,因此您需要类似以下内容:


ko.applyBindings({stores:storesModel})

问题是什么?出了什么问题?您在控制台中遇到了什么错误?请您重新措辞好吗?我一点也不理解你们。奥尔加,更新了原始帖子,从控制台添加了错误。这样就消除了错误,但现在我在我的ul中看不到任何内容
    如果I console.log(storesModel)控制台窗口显示函数d(),从这里很难说,但您可能想尝试“foreach:stores()”。还可以尝试
    var storesModel=JSON.parse(stores)
    作为测试,而不是映射插件。还可以尝试使用这个扩展来扩展数据绑定到DOM的内容:好的,我已经解决了。我将它改为ko.mapping.fromJSON(stores),而不是ko.mapping.fromJSON(stores)。这就成功了