我使用mizzao:user-status
包列出了在線用戶。流星幫手未運行反應
請注意,下面的代碼是coffeescript,它一直工作正常,特別是因爲我堅持使用Blaze而不是React(我還沒有找到在coffeescript中使用JSX的方法)。
除了切線,我特別在 client.coffee
有問題。 debugger
只被調用一次,當我檢查其中的users_data
變量時,它顯示一個空數組。很明顯,至少有一部分是反應性的,因爲當我繼續經過斷點並再次檢查users_data
的值時,它是非空的。但users
幫手的返回值似乎沒有改變。該功能不會重新運行。
TL;博士
如何使users
輔助方法,重新運行時users_data
改變
# ------------------
# server.coffee
# ------------------
Meteor.publish 'user_status', ->
Meteor.users.find(
{ "status.online": true },
fields: {}
)
# ------------------
# client.coffee
# ------------------
Meteor.subscribe 'online_users'
users = Template.users
users.helpers
users: ->
window.users_cursor = Meteor.users.find
"status.online": true
window.users_data = users_cursor.collection._docs._map
debugger
window.final = Object.keys(users_data).map (_id) =>
user = users_data[_id]
{
_id,
name: user.profile.name
}
final
和火焰模板的相關部分:
<body>
<h1>Welcome to Meteor!</h1>
{{> loginButtons }}
{{> users}}
</body>
<template name="users">
{{#each users}}
<li>{{_id}}</li>
{{/each}}
</template>
更確切地說,它是周圍的其他方式:['each'(HTTP:// blazejs .org/api/spacebars.html#Each)Blaze模板標籤需要Meteor集合遊標,但它也可以是普通數組。 – ghybs