gpt4 book ai didi

javascript - 设置为本地存储 knockout 后更新 View

转载 作者:行者123 更新时间:2023-12-03 00:49:28 26 4
gpt4 key购买 nike

我想插入数组并将其设置为 knockout 中的本地存储。到目前为止,一切都很好。据我想检索数据并推送新数据并将它们显示在 View 中。它不起作用。

    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')) : [];

View 未更新。有什么建议吗?谢谢

最佳答案

我没有足够的声誉来添加评论,否则我会先在评论中询问您的 html 代码。

如果没有你的 html 代码,很难猜测你想要实现什么,但是当你添加这一行时

self.tempNum = localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : [];

在您的代码中,您将使用纯 JavaScript 数组替换 tempNum observable 数组,这样您的关联 View 就不会更新。

尝试用这个替换

self.tempNum(localStorage.getItem('tags') ? JSON.parse(localStorage.getItem('tags')) : []);

看看这是否有帮助

关于javascript - 设置为本地存储 knockout 后更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com