我使用的是ember-data,并且有一个内置的日期类型对象.我正在把它连接到日期选择器(建立在Twitter引导程序组件上).问题是我在输入标记中创建了一个日期属性来存储日期对象.日期对象将存储为长字符串.这必须以某种方式解析为日期对象,然后存储到App.store中.我在哪里进行此转换.这就是我到目前为止所做的.
App.DatePicker = Ember.View.extend({ classNames: ['ember-text-field','input-small'],tagName: "input",attributeBindings: ['data','value','format','readonly','type','size'],size:"16",type: "text",format:'mm/dd/yyyy',value:function(){ var date = this.get('data'); if(date) return date.format(this.get('format')); else return ""; }.property('data'),data:null,didInsertElement:function(){ this.$().datepicker({ format:this.get(this.get('format')) }).on('changeDate',function(ev){ console.log(ev.date); console.log(ev.target); ev.target.setAttribute('data',ev.date); }); } });
我在这样的视图模板中使用它
{{view App.DatePicker dataBinding="staff.emp_edate" format="mm/dd/yyyy"}}
更改日期时设置日期属性时,日期属性将更改,绑定到staff.emp_edate.不幸的是,staff.emp_edata没有改变.
任何指针都会有很大的帮助.
解决方法
请尝试以下方法:
小提琴:http://jsfiddle.net/ppanagi/9rCBL/
App.DatePicker = Ember.View.extend({ // ... leave the rest as is didInsertElement: function(){ var self = this; var onChangeDate = function(ev) { self.set('data',ev.date); }; var format = this.get('format'); this.$().datepicker({ format: format }) .on('changeDate',onChangeDate); } });