设置为本地存储删除后更新视图

时间:2018-11-02 09:17:31

标签: javascript knockout.js

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

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

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

1 个答案:

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

看看这是否有帮助