2

我正在使用 Ember.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示例。例如,我尝试在选择中选择“两个”,因此确认打开并询问我,但此时选择的值已更改,并且等待确认。

4

1 回答 1

4

您可以使用selectionBinding绑定到充当临时持有者的变量,然后当该变量更改时,您会弹出确认。如果用户确认,那么您将临时值复制到您的“真实”属性中。如果他们取消,您将“真实”属性复制回临时变量。

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

于 2013-09-16T05:00:04.997 回答