7

アプリケーションで以下のコードを使用すると、日付ピッカー ウィジェットに書式設定された日付が表示されますが、[検索] をクリックするとコンソールに空の文字列が表示されることに気付きました。ただし、メソッドを削除するdidInsertElementと、datepicker ポップアップは失われますが、データバインディングは残り、入力した日付がコンソールに表示されます。

私のハンドルバーのテンプレートで

{{view App.DateField valueBinding="controller.startDate" classNames="startDate"}}
{{view App.DateField valueBinding="controller.endDate" classNames="endDate"}}
<button {{action "search" target='controller'}}>Search</button>

私のアプリで

App.ApplicationController = Ember.ArrayController.extend({
  search: function() {
    console.log(this.get('startDate'));
    return console.log(this.get('endDate'));
  }
});

App.DateField = Ember.TextField.extend({
  didInsertElement: function() {
    return this.$().datepicker();
  }
});

を設定するとデータバインディングが失われる理由はありdidInsertElementますか?

バージョン: bootstrap-datepicker

handlebars-1.0.0-rc.3
ember-1.0.0-rc.3
jQuery 1.9.1
4

3 に答える 3

10

問題は、datepicker と ember の両方が値の変化をさまざまな方法で認識していることだと思います。これを見てください:

  App.DateField = Ember.TextField.extend(
    didInsertElement: ->
      @.$().datepicker().on 'changeDate', =>
        @.$().trigger('change')
  )

ウィジェットの変更イベントが発生したときに、方向転換して要素で変更イベントをトリガーすると、Ember はバインディングが更新されたという事実を登録する必要があります。

于 2013-05-03T15:19:25.537 に答える
1

私の Ember Bootstrap クローンを見てください。

Ember ブートストラップ DatePicker

于 2013-05-03T13:17:11.907 に答える