2
我正在試驗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()」 - 主題是在服務器上定義index.js文件:
store.query.expose("posts","allPosts",function(){
return this;
});
目前發生的是,當我按下「添加」 - 按鈕,一個新的職位被添加到數據庫中,但我只能看到在列表中後手動刷新頁面後。如果我在兩個單獨的選項卡中打開該頁面兩次,並在一個選項卡中添加新的帖子,則新帖子不會自動顯示在另一個選項卡中。
我錯過了什麼嗎?
我在發佈答案後很短時間就試過了,但沒有什麼區別。從那以後,我在freenode網絡IRC上做了2-3次,但你不在那裏。現在我有時間再試一次。我正在嘗試使用最新版本的derby和racer,但仍然沒有獲得活動綁定。如果我理解這個權利,那麼model.subscribe函數應該在每次查詢結果發生變化時調用傳遞的回調函數,但它只在頁面加載時被調用。我認爲這是問題,而不是模板(即使當我將其更改爲您發佈的內容時)。 –
我得到它的工作。我需要使用model.ref('_ posts',post)引用posts對象,然後在模板中迭代這個對象。如果你添加到你的anser,我會接受它:) –