要将数据传递到视图中,一般的"job"是这样设置的:
SCHEDULER.every '1m', :first_in => 0 do |job|
send_event('widget_id', { })
end
在视图中,它被这样处理:
<li data-foreach-item="items">
<span class="label" data-bind="item.label"></span>
<span class="value" data-bind="item.value"></span>
</li>
我不确定如何传递一个哈希(或更广泛地说,集合),能够在该标签,值格式中读取。如果有人能给我指出正确的方向,我会很感激的。我找不到任何有用的文档
文档很有欺骗性,你传入一个带有Hash的数组
下面是我如何使用Listbuzz = [{:label=>"Count", :value=>10}, { :label=>"Sort", :value=>30}]
send_event('buzzwords', { items: buzz })
上面的工作,但如果我做以下操作:
buzz = [{:label=>"Count", :value=>10}, { :label=>"Sort", :value=>30}]
items = buzz.to_json
send_event('buzzwords', { items: items})
这不起作用,但是文档说send_event(widget_id, json_formatted_data)
item
是json格式的,但这不起作用,而是传递一个数组与哈希
免责声明:我没有使用过潇洒(尽管它看起来很有趣)。
From the docs:
…Send_event ('karma', {current: rand(1000)})
…此作业将每分钟运行一次,并将向ALL发送一个随机数将data-id设置为'karma'的小部件
您使用以下方法发送数据:
send_event (widget_id json_formatted_data)
因此,对于您的集合,您需要一个哈希数组,每个哈希具有键label
和value
(因为在coffeescript中对对象的实例方法调用(在Ruby中)实际上只是对哈希的访问器)。
一旦你有了这个集合,将其转换为JSON,并将其与访问器items
粘贴在对象中,例如
require 'json'
items = [{label: "l1", value: "v1"},{label: "l2", value: "v2"},{label: "l3", value: "v3"}]
json_formatted_items = items.to_json
# => "[{"label":"l1","value":"v1"},{"label":"l2","value":"v2"},{"label":"l3","value":"v3"}]"
SCHEDULER.every '1m', :first_in => 0 do |job|
send_event('widget_id', {items: json_formatted_items })
end
我不知道这是否可行,但我认为这是可行的。