OSDN Git Service

fix:retrive
[pettanr/pettanr.git] / app / assets / javascripts / peta / item.js.coffee
index 1c133c5..f2ec457 100644 (file)
@@ -84,6 +84,10 @@ class Peta.Item extends Backbone.Model
       if my_settings\r
         attr[manifest.settings_column_name] = my_settings.to_json\r
   \r
+  @retrieve: (id, context, options = {}) ->\r
+    item = new this({id: id})\r
+    item.retrieve(context, options)\r
+  \r
   #InstanceMethods\r
   \r
   default_url: () ->\r
@@ -118,6 +122,15 @@ class Peta.Item extends Backbone.Model
     else\r
       @item_name()\r
   \r
+  get_parent: (belongs_to_name, context, options = null) ->\r
+    m = Manifest.item_name_to_model(belongs_to_name)\r
+    retriever = new Pettanr.Cache.Retriever(m, @get(belongs_to_name + '_id'))\r
+    return retriever if !options\r
+    @listenTo(retriever, 'retrieve', (item) =>\r
+      options.success.call(context, item)\r
+    )\r
+    retriever.retrieve()\r
+  \r
   has_many: (has_many_name) ->\r
     has_many_manifest = @my_class().my_manifest().associations.has_many[has_many_name]\r
     action_name = has_many_manifest.list_action_name\r
@@ -157,6 +170,14 @@ class Peta.Item extends Backbone.Model
   retriever: () ->\r
     new Pettanr.Cache.Retriever(@my_class(), @get('id'))\r
   \r
+  retrieve: (context, options = {}) ->\r
+    retriever = new Pettanr.Cache.Retriever(@my_class(), @get('id'))\r
+    @listenTo(retriever, 'retrieve', (item) =>\r
+      callback = options.success\r
+      callback.call(context, item)\r
+    )\r
+    retriever.retrieve(options.force)\r
+  \r
   @pick_item_name: () ->\r
     null\r
   \r