gpt4 book ai didi

javascript - derby - 更改时自动 "refresh"

转载 作者:行者123 更新时间:2023-11-30 05:51:56 25 4
gpt4 key购买 nike

我正在试验 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 次并在一个选项卡中添加新帖子,新帖子不会自动显示在另一个选项卡中。

我错过了什么吗?

最佳答案

为了进行实时绑定(bind),您需要使用单括号。

尝试更改 <postList:>到:

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

<post:>
<div>{:post.title}</div>

我还添加了 as :post以确保路径正确。这避免了您可能会遇到的许多错误。

如果这不能解决问题或者您有任何其他问题,请加入 freenode 上的#derbyjs 并给我发消息 (switz)。

关于javascript - derby - 更改时自动 "refresh",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com