我打开了这个帐户g2840904@trbvm.com/12345678
。
我分叉https://github.com/tachang/knockout_tasklist将knockout
同步到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
?
答案 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);