为什么淘汰赛不会通过模型更改自动更新?

时间:2015-05-02 08:24:59

标签: javascript knockout.js knockout-2.0

parse.com

我打开了这个帐户g2840904@trbvm.com/12345678。 我分叉https://github.com/tachang/knockout_tasklistknockout同步到parse.com,当我启动应用时,我确实看到唯一的项sometitle1但是如果我将sometitle1更改为{在parse.com task class {1}} {i}}我没有看到在webapp中自动重新启用此功能。当变量title被定义为sometitle2时,knockout应该做什么?

observabale

我该怎么办才能自动反映模特的变化?意思是在parse.com中将this.title = ko.observable(data.title); 更改为sometitle1会更新网页以自动反映该更改并显示sometitle2而不是sometitle2

1 个答案:

答案 0 :(得分:2)

似乎你误解了KO应该做的事情。作为客户端库,Knockout负责将您的UI与基础数据模型同步,基础数据模型由您通过ko.observable变量提供,而不是数据库本身。应用程序分为3层是有原因的 - 您拥有处理UI的前端,所有业务逻辑所在的中间层以及用作数据存储的后端。 Knockout将中间层和前端连接起来,同时要求在前端和后端之间建立直接桥接。

话虽这么说,你可以自己提供这座桥,但当然从头开始写它是一种有点痛苦的练习。最简单的方法是使用setInterval向db询问是否每隔X秒就有新数据到达:

var updateTasks = function () {
    $.parse.get("task", {}, function(json) {
        self.tasks.removeAll();
        for( var i = 0; i < json.results.length ; i++ ) {
             var task = json.results[i];
             self.tasks.push(new Task({ title: task.title, objectId: task.objectId }));
         }
     })
 }
 setInterval(updateTasks, 5000);