设置为 localstorage knockout 后更新视图

Update view after setting to localstorage knockout

我想推入数组并在敲除中将其设置为本地存储。到目前为止,一切都很好。 据我想检索数据并推送新数据并将它们显示在视图中。它不工作。

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

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

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

如果没有您的 html 代码,很难猜出您要实现什么,但是当您添加此行时

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

您的代码然后用普通 javascript 数组替换 tempNum 可观察数组,这样您的关联视图就不会更新。

尝试用这个替换

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

看看这是否有帮助