2012-07-10 58 views
6

我正在使用ember-data并且有一个内置的日期类型对象。我把这个挂钩到日期选择器(建立在Twitter引导组件上)。问题是我在输入标记中创建了一个日期属性来存储日期对象。日期对象以长字符串形式存储。这必须以某种方式被解析成一个日期对象,然后存储到App.store中。我在哪里做这个转换。这是我迄今为止所做的。Ember数据日期绑定

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没有改变。

任何指针都会有很大的帮助。

回答

8

尝试以下方法:

小提琴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); 
    } 
}); 
+0

给出了错误 类型错误: '未定义' 不是一个函数(评价 'self.set(' 数据”,EV。日期)') – 2012-07-10 17:40:36

+0

如果你可以拨弄它我可以看到有什么问题 – 2012-07-10 17:42:22

+0

http://jsfiddle.net/P8usP/1/ – 2012-07-10 18:48:20