6

我正在使用 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 没有改变。

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

4

1 回答 1

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);
  }
});
于 2012-07-10T17:24:08.090 回答