我有一个对象(analysisLogData),我用它来使用KnockoutJS生成一个表。这是包含此对象的viewModel:
function AppViewModel() {
var self = this;
self.analysisLogData = ko.observableArray();
self.analysisLogTitle = ko.observable("Warnings")
self.changeAnalysisLog = function(title) {
self.analysisLogTitle(title)
}
var data =
{
"Warnings": [
{
"number": 3002,
"description": "There may be a problem with the device you are using if you use the default profile"
},
{
"number": 3001,
"description": "There may be a problem with the device you are using if you don't use the default profile"
}
]
,
"Errors": [
{
"number": 1000,
"description": "No networks are loaded"
},
{
"number": 1002,
"description": "No devices are loaded"
}]
}
self.addLog = function (type, content) {
self.analysisLogData()[type].push(content);
}
self.analysisLogData.push(data)
}
ko.applyBindings(new AppViewModel());
您可以在JSFiddle中看到结果:http://jsfiddle.net/etiennenoel/V4r2e/5/
我希望能够添加错误或警告而不会丢失已经存在的警告或错误。
我尝试在self.addLog
函数中执行以下操作:
self.addLog = function (type, content) {
self.analysisLogData()[type].push(content);
}
但是它说不能推送到未定义的对象......
答案 0 :(得分:2)
好的,在小提琴里玩耍之后。我相信你需要对你在可观察数组中推送数据的方式做一些改变。但是,如果不进行大量修改,请在此链接中检查我的解决方案。
self.addLog = function (type, content) {
self.analysisLogData()[0][type].push({
"number": 1002,
"description": content
});
}
数据对象应该是
"Warnings": ko.observableArray([........]),
"Errors": ko.observableArray([..........])
我做了两件事
答案 1 :(得分:0)
self.analysisLogData()
是一个包含错误/警告数组的数组。
我不确定您是否希望数据结构化。
为了让小提琴起作用,你可以用以下代码替换addLog函数:
self.addLog = function (type, content) {
self.analysisLogData()[0][type].push(content);
}