我想在用户点击表格上的排序标题后重置路线上的模型:
import Ember from 'ember';
//import _ from 'lodash';
export default Ember.Route.extend({
needs: 'event-profile',
model: function(){
var parentmodel = this.modelFor('eventProfile').get('slug');
return this.store.find('listingEvent', { eventInstanceSlug: parentmodel, skip: 0, limit: 20 });
},
actions: {
orderByStart: function(){
this.set('loading', true);
console.debug('order by start');
var _this = this;
var parentmodel = this.modelFor('eventProfile').get('slug');
this.store.find('listingEvent', { eventInstanceSlug: parentmodel, skip: 0, limit: 20, sort: 'start' })
.then(function(model){
_this.set('loading', false);
_this.set('model', model);
});
}
}
});
orderByStart被解雇了,我可以看到正在返回正确的数据但是设置_this.set('model', model);
的模型似乎没有任何效果?
解决这个问题的正确方法是什么?
答案 0 :(得分:0)
根本问题是您的操作处理程序在您的路由上,但您需要更改的模型属性位于您的控制器上。快速变化是调用controllerFor。
e.g。这个:_this.set('model', model);
成为:_this.controllerFor('my-route').set('model', model);
但是,通过将动作处理程序移动到控制器本身可以做得更好。
import Ember from 'ember';
export default Ember.Controller.extend({
needs: 'event-profile',
loading : false,
actions: {
orderByStart: function(){
this.set('loading', true);
var _this = this;
var parentmodel = this.get('controllers.eventProfile.model.slug');
this.store.find('listingEvent', { eventInstanceSlug: parentmodel, skip: 0, limit: 20, sort: 'start' })
.then(function(model){
_this.setProperties({ loading : false, model : model});
});
}
}
});