我尝试在用户第一次点击时更新选项中的选项(最终这将是ajax调用)。问题是,在第二次单击选择之前,您无法看到在点击时添加的选项。
首先点击:http://i.stack.imgur.com/Dx0d5.png
第二次点击:http://i.stack.imgur.com/0Xirb.png
以下是观点:
App.ArchiveView = Ember.Select.extend({
selection: null
initialized: null
classNames: ['select2 flat']
optionValuePath: "content.url"
optionLabelPath: "content.date"
contentBinding: 'controller.child_reports'
didInsertElement: ->
@_super()
unless @get('initialized')
@get('controller.child_reports').pushObject(
{date: 'Latest', url: @get('controller.last_child_report_url')}
)
click: ->
unless @get('initialized')
@get('controller.child_reports').pushObject(
{date: '5-15', url: 'sucka'}
)
@set('initialized', true)
#need to rerender or something
change: ->
@set('controller.amazon_url', @get('selection.url'))
})
控制器:
App.ReportController = Ember.ObjectController.extend({
child_reports: null
init: ->
@_super()
@set('child_reports', [])
amazon_url: ((key, value) ->
unless value?
value = @get('model.amazon_url')
else
@set('model.amazon_url', value)
return value
).property('model.amazon_url')
last_child_report_url: ( ->
@get('model._embedded.last_child_report.amazon_url')
).property('model._embedded.last_child_report.amazon_url')
我在@.rerender()
行动中尝试click()
无济于事。如何在第一次点击时显示添加的选项?
谢谢!
答案 0 :(得分:0)
简而言之:使用mouseDown
代替click
。类似的东西:
App.SuperSelect = Ember.Select.extend({
openedOnce: false,
mouseDown: function () {
this._super();
if (this.get("state") !== "inDOM") {
return;
}
if (this.get("openedOnce")) {
return;
}
this.set("openedOnce", true);
this.get("controller.model").pushObject(/*Create new model*/);
}
});
完成工作JSBIN here。