2013-09-15 3 views
3

Я использую Ember.Select view для использования select. я хочу, когда пользователь хочет изменить пункт/индекс выберите уголек создать подтвердить, так что я с помощью так:Подтвердить перед Ember.Select change

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 открыт также выбрать пункт/индекс изменился, но я хочу после того, как пользователь нажмет Ok для подтверждения, выберите пункт изменения не тогда, когда нажимаете кнопку выбора. здесь jsbin образец. например, я пытаюсь выбрать «два» в списке, поэтому подтвердите открытие и спросите меня, но значение выбора изменится в это время, а dosent wait for confirm.

+0

Вы можете производить скрипку, чтобы играть. Также этот код запускается до нажатия кнопки OK. if (userPropmpt) { this.get ('controller'). setMeasure (e.get ('selection'). get ('uniqueName')); } – Thalaivar

+0

Я добавляю образец jsbin. yes Значение выбора изменения до нажатия кнопки Ok. я хочу, если пользователь нажимает «отменить», ничего не меняет даже значение выбора. – MBehtemam

ответ

4

Вы можете использовать selectionBinding для привязки к переменной, которая действует как временный держатель, а затем, когда этот var изменяет, вы подтверждаете подтверждение. Если пользователь подтверждает, то вы копируете временное значение в свое «реальное» свойство. Если они отменяются, вы копируете «реальное» свойство обратно во временный var.

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

Смежные вопросы