我正在使用Ember.Select视图以使用select。我想当用户想要更改select ember的项目/索引时创建一个确认,所以我使用这种方式:
OlapApp.CubeSelectView = Ember.Select.extend({
contentBinding: "controller.content",
optionValuePath: "content.uniqueName",
optionLabelPath: "content.name",
prompt: "Please select a Cube",
valueBinding: "OlapApp.CubeController.test",
theSelectionChanged: function(e) {
var userPropmpt = confirm("this operation Delete All of your work");
if(userPropmpt)
{
this.get('controller').setMeasure(e.get('selection').get('uniqueName'));
}
}.observes('selection')
});
但是当用户更改选择项目时,打开的confrim也会选择项目/索引已更改,但我想在用户按下确认的确定按钮后,选择项目更改时不是谁点击选择。 这是jsbin样本。例如,我尝试在选择中选择“两个”,所以确认打开并问我,但此时选择的值已更改并且剂量等待确认。
答案 0 :(得分:4)
您可以使用selectionBinding
绑定到充当临时持有者的变量,然后当该变化时,您弹出确认。如果用户确认,则将临时值复制到“real”属性中。如果它们取消,则将“real”属性复制回临时变量。
App.IndexController = Ember.ArrayController.extend({
content:['one','two','three','four','five'],
selectedValue : 'one', // this is the buffer for the select
realValue : 'one' // this is the real value
});
App.CubeSelectView = Ember.Select.extend({
contentBinding:'controller.content',
selectionBinding : 'controller.selectedValue',
optionValuePath:'content',
optionLabelPath:'content',
change:function(e){
var userConfirm = confirm("this operation Delete All of your work");
if(userConfirm){
this.set('controller.realValue', this.get('selection'));
}else{
this.set('selection', this.get('controller.realValue'));
}
}
});
这是一个经过修改的JSBin:http://jsbin.com/igUgEVO/1/edit