2016-09-21 3 views
0

У меня есть контроллер, где я получаю значение от hbs, которое отправляет мне выбранное значение страны. Мне нужна эта выбранная страна в модели для вычисления и возврата назад к 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}} непосредственно.

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