德比 – 自动“刷新”的变化

我正在试验derbyjs,不知道如何使用订阅的实时更新工作。

目前,该应用程序只是一个尽可能基本的后标题列表和一个文本框,可以添加一个新的post:

<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> 

该应用程序只有“/”路线,它应该订阅所有职位。 而是在第一次从数据库加载post时调用callback,而不是在进行任何更改:

 // 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; }); 

目前发生的事情是,当我按下“添加”button,一个新的职位被添加到数据库,但我只能看到手动页面刷新后的列表中的职位。 如果我在两个单独的选项卡中打开该页面两次,并在一个选项卡中添加一个新的post,则新post不会自动显示在另一个选项卡中。

我错过了什么?

为了做活动绑定,您需要使用单个括号。

尝试将<postList:>更改为:

 <postList:> {#each posts as :post} <app:post> {/each} <post:> <div>{:post.title}</div> 

我还添加as :post确保path是正确的。 这样可以避免大量的错误。

如果这不能解决问题,或者您还有其他问题,请在freenode上join#derbyjs并发送给我(switz)。