我有一个控制器,我从hbs获取值,它向我发送选定的国家/地区值。我需要在模型中选择这个所选国家来计算并将一些结果返回给hbs。如何在控制器中设置此值并将其放入模型中,以便我可以使用该值进行计算?
答案 0 :(得分:0)
嗯,可能有一些不同的方法来实现这一目标。但是,我会举一些有希望帮助你的例子。
//Controller.js
notes: Ember.computed('model.notes.[]', 'model.notes.@each.date', 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本身中使用Computed函数,比如
// 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;
});
},
在上面的示例中,您可以看到我已经设置了一个动作来保存模型中的注释,这可以轻松地将()设置为具有完全相同属性名称的模型,如果这样做,您将立即在视图中返回结果。
希望它可以帮助你。我建议您阅读Ember-Docs答案 1 :(得分: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}}
。