Dashing Dashboard Framework传递标签&列表小组件的值

时间:2013-03-13 14:27:14

标签: ruby sinatra dashing

要将数据传递到视图中,通用“作业”设置如下:

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>

我不确定如何传入能够以该标签,值格式读取的哈希(或更广泛的集合)。如果有人能指出我正确的方向,我一定会很感激。我找不到任何有用的文档。

2 个答案:

答案 0 :(得分:4)

文档非常具有欺骗性,你传入一个带有哈希的数组

以下是我使用List

所做的工作
buzz  = [{: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格式化但不起作用,而是使用哈希传递数组

答案 1 :(得分:0)

免责声明:我没有使用Dashing(虽然它看起来很有趣)。

来自文档:

  

...
  send_event('karma',{current:rand(1000)})
  ......

     

此作业将每分钟运行一次,并将随机数发送给ALL   将data-id设置为'karma'的小部件。

     

您使用以下方法发送数据:

     

send_event(widget_id,json_formatted_data)

因此,对于您的集合,您需要一个哈希数组,每个哈希都有键labelvalue(因为对coffeescript中的对象的实例方法调用(在Ruby中)实际上只是{ {3}})。

获得该集合后,将其转换为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

我不知道这是否有效,但这是我认为可行的。希望它有所帮助。