以下を参考に合体させたいと考えているところ。まだnested formに対応してない。
- formをfillする
- nasted formも対応しているように見えるがcheckbox対応できてない
- backbone-railsのbackbone_datalink.jsの改良版
- これは、codebrew/backbone-rails #27でpull requestとなっているもの
- checkbox対応してる
以下を参考に合体させたいと考えているところ。まだnested formに対応してない。
| $(function() { | |
| _.extend(Backbone.View.prototype, { | |
| formDataLink: function(model_name) { | |
| var self = this; | |
| var _recurse_form = function(object, objName) { | |
| _.each(object, function(v,k) { | |
| if (v instanceof Object) { | |
| object[k] = _recurse_form(v, objName + '[' + k + '_attributes]'); | |
| } else { | |
| var el = self.$('[name="'+ objName + '[' + k + ']"]'); | |
| // form change 2 model | |
| $(el).bind('change', function() { | |
| var attrs = {}; | |
| if ( $(el).is("input[type='checkbox']") ) { | |
| attrs[k] = $(el).prop('checked'); | |
| } else { | |
| attrs[k] = $(el).val(); | |
| } | |
| self.model.set(attrs, {silent: true}); | |
| }); | |
| // model change 2 form | |
| self.model.bind("change:" + k, function() { | |
| val = self.model.get(k) | |
| if (el.is("input[type='checkbox']") && (val == true || val == false) ) | |
| el.prop('checked', val); | |
| return el.val(val); | |
| }); | |
| object[k] = el.val(); | |
| } | |
| }); | |
| return object; | |
| }; | |
| // attributes initialize | |
| this.model.attributes = _recurse_form(this.model.attributes, model_name); | |
| } | |
| }); | |
| }); |