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')
)