我想推入数组并将其设置为淘汰赛中的本地存储。到目前为止,一切都很好。 据我想检索数据并推送新数据并将其显示在视图中。它不起作用。
var viewModel = function() {
var self = this;
this.tags = ko.observable('');
self.tempNum = ko.observableArray();
self.tempNum = localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : []; // this line wont let data to be updated
self.formSubmit = function(){
var self = this;
var num = checknum(self.tags().split(/[,;\n]+/));
console.log(self.tempNum)
localStorage.setItem('tags',ko.toJSON(num));
}
self.removeTags = function() {
console.log("ada")
}
function checknum(item){
for(var i = 0; i < item.length; i++){
if(!isNaN(item[i]) && item[i] != ''){
if(item[i] >= 0){
self.tempNum.push({value:item[i],color:"red"})
}else{
self.tempNum.push({value:item[i],color:"blue"})
}
}
}
return self.tempNum
}
};
ko.applyBindings(new viewModel());
实际上一切正常,当我添加此行时:
self.tempNum = localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : [];
视图不会更新。有什么建议吗?谢谢
答案 0 :(得分:1)
我没有足够的声誉来添加评论,否则我会先在评论中要求您提供html代码。
没有您的html代码,很难猜测您要实现的目标,但是当您添加此行时
self.tempNum = localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : [];
将您的代码替换为普通的javascript数组,以便您的关联视图不会得到更新。
尝试用此替换
self.tempNum(localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : []);
看看这是否有帮助