我正在尝试使用 derbyjs,但无法弄清楚这些使用订阅的实时更新是如何工作的。
目前,该应用程序只是尽可能基本的帖子标题列表和末尾的文本字段,人们可以在其中添加新帖子:
<Title:>
Sample derby app
<Header:>
<!-- This is a component defined in the /ui directory -->
<ui:connectionAlert>
<Body:>
<h1>Posts</h1>
<app:postList>
<input type="text" value="{_fieldValue}"><input type="button" value="add" x-bind="click:add">
<postList:>
{{#each posts}}
<app:post>
{{/}}
<post:>
<div>{{title}}</div>
该应用程序只有“/”路由,它应该订阅所有帖子。相反,回调只是在第一次从数据库加载帖子时被调用,而不是在任何更改时调用:
// Derby routes can be rendered on the client and the server
get('/', function(page, model, params) {
model.subscribe(model.query("posts").allPosts(), function(err, posts) {
page.render({
posts:posts.get()
})
})
})
// CONTROLLER FUNCTIONS //
ready(function(model) {
this.add = function(){
model.set("posts."+model.id(),{title:model.get("_fieldValue")});
model.set("_fieldValue","");
}
})
“getAllPosts()”-motif 在服务器 index.js 文件中定义:
store.query.expose("posts","allPosts",function(){
return this;
});
当前发生的情况是,当我按下“添加”按钮时,一个新帖子被添加到数据库中,但我只能在手动页面刷新后在列表中看到该帖子。如果我在 2 个单独的选项卡中打开页面 2 次并在一个选项卡中添加新帖子,则新帖子不会自动显示在另一个选项卡中。
我错过了什么?