Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twitter bootstrap 为什么在我使用bootstrap datepicker时,Ember.js会丢失valueBinding?_Twitter Bootstrap_Ember.js_Handlebars.js - Fatal编程技术网

Twitter bootstrap 为什么在我使用bootstrap datepicker时,Ember.js会丢失valueBinding?

Twitter bootstrap 为什么在我使用bootstrap datepicker时,Ember.js会丢失valueBinding?,twitter-bootstrap,ember.js,handlebars.js,Twitter Bootstrap,Ember.js,Handlebars.js,我注意到,在我的应用程序中,当我使用下面的代码时,我在日期选择器小部件中得到了一个格式化的日期,但当我单击搜索时,控制台显示空字符串。但是,如果我删除didInsertElement方法,我将丢失datepicker弹出窗口,但数据绑定仍然存在,控制台将显示我键入的日期 在我的车把模板中 {{view App.DateField valueBinding="controller.startDate" classNames="startDate"}} {{view App.DateField va

我注意到,在我的应用程序中,当我使用下面的代码时,我在日期选择器小部件中得到了一个格式化的日期,但当我单击搜索时,控制台显示空字符串。但是,如果我删除
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>
你知道为什么我在设置
didInsertElement
时丢失了数据绑定吗

版本: ,


我就是这样做的

App.DatePicker = Ember.View.extend
  tagName: "input"
  date: null
  attributeBindings: ['value','format','readonly','type','size']
  size:"16"
  type: "text"
  format:'mm/dd/yyyy'

  value: ( ->
    if date = @get('date')
      date
   else
     ""
  ).property('date')

  didInsertElement: ->
    fmt = @get('format')

    onChangeDate = (ev) =>
      @set 'date', ev.date

    @.$().datepicker(
      format: fmt,
      autoclose: true
    ).on('changeDate', onChangeDate)

  willDestroyElement: -> @$().datepicker('remove')


#in your template
{{view App.Datepicker dateBinding="content.date"}}

看看我的Ember引导程序克隆:


我认为问题在于datepicker和ember都以不同的方式看到值的变化。看看这个:

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

当小部件更改事件触发时,如果您掉头并触发元素上的更改事件,那么Ember应该注册绑定已更新的事实。

这就是我正在寻找的修复方法。谢谢我在寻找同样的解决方案。谢谢+1
App.DatePicker = Ember.View.extend
  tagName: "input"
  date: null
  attributeBindings: ['value','format','readonly','type','size']
  size:"16"
  type: "text"
  format:'mm/dd/yyyy'

  value: ( ->
    if date = @get('date')
      date
   else
     ""
  ).property('date')

  didInsertElement: ->
    fmt = @get('format')

    onChangeDate = (ev) =>
      @set 'date', ev.date

    @.$().datepicker(
      format: fmt,
      autoclose: true
    ).on('changeDate', onChangeDate)

  willDestroyElement: -> @$().datepicker('remove')


#in your template
{{view App.Datepicker dateBinding="content.date"}}
  App.DateField = Ember.TextField.extend(
    didInsertElement: ->
      @.$().datepicker().on 'changeDate', =>
        @.$().trigger('change')
  )