在KnockoutJS中将数据推送到数组的问题

时间:2016-08-24 03:09:18

标签: javascript jquery html arrays knockout.js

在我的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告诉我正在按预期从用户获取值。然而,"推"任务数组上的方法似乎根本没有任何影响。请指导我。

1 个答案:

答案 0 :(得分:1)

如果要将任务传递给数组,则必须每次都执行,因此,在初始化时,必须使用.text { overflow: hidden; max-height: 0; transition: max-height 0.5s cubic-bezier(0, 1, 0, 1); &.full { max-height: 1000px; transition: max-height 1s ease-in-out; }

您的[new Task({...}), new Task({...})]不正确。这显示了你的任务变量,而不是你的self.tasks,我想知道你想要展示什么,所以要小心你的变量名称和(无)varname vs this.varname vs self.varname或者你会有这么多头痛......

最后here you are您的示例完全正常工作。

我希望这对你有所帮助。

问候。