0

我坚持这个:

我需要将数据填充到我的应用程序中。

我是第一次使用Promotion....

在没有 ProMotion 的情况下,我使用 init 方法获取数据

现在我的代码如下所示:

class Parties < ProMotion::TableScreen
  attr_accessor :_cells
  @news = []
  include MyUiModules
  title 'Yazarlar'
  refreshable callback: :on_refresh,
     pull_message: "Pull to refresh",
     refreshing: "Refreshing data…",
     updated_format: "Last updated at %s",
     updated_time_format: "%l:%M %p"
 def on_refresh
   #MyItems.pull_from_server do |items|
   #@my_items = items
   end_refreshing
   #update_table_data
   # end
 end

 def table_data
   _cells = []
   [{
     title: nil,
     cells: create_cells(_cells)
   }]            
 end
 def will_appear
    Barbutton.create_bar(self)
    set_attributes self.view, {
      backgroundColor: hex_color("DBDBDB")
    }        
  end

  def go_to_next
    App.delegate.slide_menu.show_menu    
  end

  def create_cells(_cells)

   BW::HTTP.get(URL) do |response|
     json = BW::JSON.parse response.body.to_str
     for line in json
       _cells << { title: line["val_for_title"]}
     end
   end
   _cells
  end
end  

不幸的是,这确实返回了一个空数组,我不知道如何解决它。谢谢你的帮助

4

1 回答 1

3

你不能这样做,因为 BW::HTTP.get 是异步的!

而是尝试这样的事情:

def on_init
  @data = []
end

def table_data
  [
    {
      title: nil,
       cells: @data
     }
  ]            
end

def on_refresh
  BW::HTTP.get(URL) do |response|
    @data = []
    json = BW::JSON.parse(response.body.to_str)
    json.each do |hash|
      @data << { title: hash["val_for_title"]}
    end
    update_table_data
    end_refreshing
  end
end

希望能帮助到你 :-)

于 2013-07-30T12:31:53.773 回答