2016-09-21 20 views
0

私には、選択した国の値を私に送るhbsから値を取得するコントローラがあります。モデルでこの選択された国が必要で、結果を計算してバックに戻す必要があります。どのように私はその値を使用して計算することができますので、コントローラでこの値を設定し、モデルでそれを得る?emberjsのコントローラからモデルへのデータの受け渡し

+0

サンプルコードは、問題をより明確に説明します。私はあなたがモデルのプロパティを更新するコントローラの計算されたプロパティを探していると思います – kumkanillam

答えて

0

これを達成するためには、いくつかの異なるアプローチがあります。しかし、私はあなたにうまくいけば助けになるいくつかの例を与えます。代わりに、コントローラの例は以下のようになり

//Controller.js 
notes: Ember.computed('model.notes.[]', '[email protected]', function() { 
    return this.get('model.notes').sortBy('date').reverse(); //This is an example of Computed function which in this case it's sorting notes based on date. 
}), 
blink: null, 
    actions: { 
    taskChangeColor: function() { 
     this.set('blink', 'blinker'); // this is another example that set new data by action which can be retrive from model and set to property 
    } 
    } 

またはあなたが行うことができます別のものがさらに

// model.js which is using ember-data and moment 
    timeZone: DS.attr(), //for example one property coming from server 
    utcOffsetFormat: Ember.computed(function() { 
    let time = moment.tz(this.get('timeZone')).format('hh:mm a'); 
    return time; 
    // using a computed function to instantiate another value based on existing model property which means you can simpley use this property instead of direct one. 
    }) 

のようなモデル自体で計算機能を使用することですが、あなたはまだRoute.jsでアクションを使用する資格があります:

上記の例では
//route.js 
actions: { 
    changeSave: function(step) { 
     var something = { 
     contact: this.currentModel, 
     }; 
     this.currentModel.set('step', something.contact); 
     this.currentModel.save().then(d => { 
     // set your alert or whatever for success promise 
     return d; 
     }).catch(e => { 
     console.log(error(e.message)); 
     return e; 
     }); 
    }, 

あなたは私がまったく同じプロパティ名を持つモデルを簡単に設定することができ、モデル内のノートを()を保存するアクションを設定していることを見ることができますが、この君のwiを行う場合あなたの視点ですぐに結果を得るでしょう。

ご希望の場合はお手数ですが、私は読むことをお勧めしますEmber-Docs

0

私はあなたの要件のために、あなたはselectedCountryValueのコントローラのプロパティは必要ないと言います。この値はモデル自体に保存できます。

ルートで

setupController(model,transition){ 
    this._super(...arguments); //this will set model property in controller. 
    Ember.set(model,'selectedCountryValue','US'); //you can set default value 
} 

とコントローラの内部で、あなたはmodel.selectedCountryValueに依存して計算されたプロパティを作成します。結果を計算する

result:Ember.Computed('model.selectedCountryValue',function(){ 
//compute something return the result 
} 

テンプレートでは、{{model.selectedCountryValue}}を直接使用できます。

関連する問題