2

私は選択を使用するためにEmber.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')
});

しかし、ユーザーが選択項目を変更すると、確認が開かれ、選択項目/インデックスも変更されましたが、ユーザーが確認の[OK]ボタンを押した後、誰が選択をクリックしたときではなく、選択項目の変更が必要です。ここにjsbinのサンプルがあります。たとえば、select で「two」を選択しようとするので、open を確認して確認しますが、この時点で select の値が変更され、確認を待ちません。

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 に答える