OSDN Git Service

fix form save & done event
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field.js.coffee
index 476216b..3795c02 100644 (file)
@@ -11,6 +11,11 @@ class Locmare.FormModule.Field extends Backbone.View
     @helpers = new Locmare.FormModule.FieldModule.Helpers({field: this, field_manifest: @field_manifest})\r
     @rb = @row_break()\r
     @options = {'data-model': @field_manifest.form_name}\r
+    @on('change', @change)\r
+    item = @item()\r
+    @listenTo(item, 'resize', @refresh)\r
+    @listenTo(item, 'move', @refresh)\r
+    @listenTo(item, 'sort', @refresh)\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -19,6 +24,18 @@ class Locmare.FormModule.Field extends Backbone.View
     this.$el.append(@helpers.render().el)\r
     this\r
   \r
+  refresh: () ->\r
+    @tag.render()\r
+    @helpers.refresh()\r
+  \r
+  change: () ->\r
+    @set(@val(), {silent: true})\r
+    @item().trigger('input:' + @field_name)\r
+    @item().trigger('input')\r
+    \r
+  is_extend: () ->\r
+    false\r
+  \r
   mounted: () ->\r
     if @form.mounted\r
       0\r
@@ -37,8 +54,10 @@ class Locmare.FormModule.Field extends Backbone.View
   value: () ->\r
     @item().get(@field_manifest.column_name())\r
   \r
-  set: (v) ->\r
-    @item().set(@field_manifest.column_name(), v)\r
+  set: (v, opt = null) ->\r
+    a = {}\r
+    a[@field_manifest.column_name()] = v\r
+    @item().set(a, opt)\r
   \r
   options: (tag_options = {}) ->\r
     tag_options\r
@@ -63,14 +82,16 @@ class Locmare.FormModule.FieldModule.Helpers extends Backbone.View
     @field = options.field\r
     @field_manifest = options.field_manifest\r
     @helpers = {}\r
-    _this = this\r
-    _.each @field_manifest.helpers, (helper_manifest, helper_name) ->\r
-      _this.helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(_this.field, helper_manifest)\r
+    _.each @field_manifest.helpers, (helper_manifest, helper_name) =>\r
+      @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest)\r
   \r
   render: () ->\r
     this.$el.html('')\r
-    _this = this\r
-    _.each @helpers, (helper) ->\r
-      _this.$el.append(helper.render().el)\r
+    _.each @helpers, (helper) =>\r
+      this.$el.append(helper.render().el)\r
     this\r
   \r
+  refresh: () -> \r
+    _.each @helpers, (helper) =>\r
+      helper.refresh()\r
+  \r