Javascript 使用KnockoutJS和Jade加载json文件
我有一个通过api加载的json文件。json文件将是一个存储阵列。加载页面时,这是stacktrace中出现的错误: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
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)。这就成功了