【问题标题】:knockout js polling not working淘汰赛js轮询不起作用
【发布时间】:2013-05-27 19:06:09
【问题描述】:

我在击倒刷新时遇到困难。

这是我的视图模型;

$(document).ready(function () {
    ko.applyBindings(new Task(), document.getElementById('taskSummary'));
    setInterval(Task, 2000);
});

function task(name, description, project) {
    var self = this;

    self.name= ko.observable(name);
    self.description = ko.observable(description);
    self.project = ko.observable(project);

}


function Task() {
    var self = this;
    self.tasks = ko.observableArray([]);
    self.tasks.removeAll;
    $.getJSON("/api/tasks/5", function (data) {
        $.each(data, function (key, val) {

            self.tasks.push(new task(val.Name, val.Description, val.Project));

        });
    });

}

当我更改后端数据库中的数据时,它将数据返回到视图但不更新。

任何帮助表示赞赏。我确定它是我缺少的一些小东西。

【问题讨论】:

    标签: json model-view-controller knockout.js


    【解决方案1】:

    对于淘汰赛,最好将模型应用于新的 Task 实例,保存该实例,然后设置一个 setInterval 循环来修改 Task 的“tasks”observableArray 值。

    $(document).ready(function () {
    var oTask = new Task();
    
    ko.applyBindings(oTask, document.getElementById('taskSummary'));
    
    function onLoop() {
        var self = oTask;
    
        $.getJSON("/api/tasks/5", function (data) {
            self.tasks.removeAll(); // not sure if you need this...
            $.each(data, function (key, val) {
                self.tasks.push(new task(val.Name, val.Description, val.Project));
            });
        });        
    }
    
    setInterval(onLoop, 2000);
    });
    

    【讨论】:

    • 嗨,柯克,谢谢。我试过这段代码,它没有收到任何数据。 . .不过会玩一玩。
    • 恐慌过度 - 已排序。谢谢你的柯克,当场 - 比我的复制和粘贴技能要好得多:)
    • 我的荣幸。如果您认为“接受”按钮也能帮助遇到类似问题的其他人,请寻找“接受”按钮。
    猜你喜欢
    • 2016-08-21
    • 2012-01-30
    • 2014-05-10
    • 2014-11-12
    • 2018-05-21
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多