【问题标题】:Issue with pushing data to array in KnockoutJS在 KnockoutJS 中将数据推送到数组的问题
【发布时间】:2016-12-31 00:38:06
【问题描述】:

在我的 HTML 页面中有 3 个输入。使用用户输入,我希望使用 KnockoutJS 更新我的页面元素。这是我写的脚本:

$(document).ready(function(){

    function Task(data){
        this.goal=ko.observable(data.goal);
        this.type=ko.observable(data.type);
        this.date=ko.observable(data.date);
        console.log("Data"+ " " + data.goal);

    }



    var myViewModel=function(tasks){
        var self=this;
        self.tasks=ko.observableArray([{goal:"abc", type:"Intermediate", date:"12/13/1122"}]);
        self.newGoalText=ko.observable("");
        self.newTypeText=ko.observable("");
        self.newDateText=ko.observable("");


        self.addTask=function(){
            self.tasks.push(new Task({goal:this.newGoalText(),type:this.newTypeText(), date:this.newDateText()}));

            console.log(tasks);

        self.newGoalText("");
        self.newTypeText("");
        self.newDateText("");


    }//addTask function

    }//viewModel


    ko.applyBindings(new myViewModel())

});

console.log 告诉我这些值是按预期从用户那里获取的。但是,tasks 数组上的“push”方法似乎根本没有效果。请指导我。

【问题讨论】:

  • 问题可能出在您的 html 中,因此如果您发布它会有所帮助。我测试了你的代码(没有改变任何东西),它与我提供的标记一起工作。见jsfiddle.net/ffojupuf
  • @Adrian,感谢您的帮助。我的 HTML 代码与您的相似,我没有发现 wrt 绑定有太大区别。不知道出了什么问题!我使用“值”而不是“文本输入”。这是唯一的区别。

标签: javascript jquery html arrays knockout.js


【解决方案1】:

如果你向你的数组传递一个任务,你必须每次都这样做,所以,当你初始化时,你必须使用[new Task({...}), new Task({...})]

您的console.log(tasks); 不正确。这是显示你的任务变量,而不是你的 self.tasks,我想知道你想显示什么,所以要小心你的变量名和 (none)varname vs this.varname vs self.varname,否则你会有很多头疼……

终于here you are你的例子完全工作了。

希望对你有所帮助。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多