Ember.js 一个路由模型
我想在用户单击表上的排序标题后重置路由上的模型:Ember.js 一个路由模型,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我想在用户单击表上的排序标题后重置路由上的模型: 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
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被触发,我可以看到返回了正确的数据,但是使用\u this.set('model',model)设置模型代码>似乎没有任何效果
正确的方法是什么?根本的问题是,您的操作处理程序在您的路径上,但需要更改的模型属性在您的控制器上。最快的变化是给控制器打电话
e、 g.此:\u此.set('model',model)代码>
变成:\u 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});
});
}
}
});
您不应该仅仅为了切换回订单而重新加载模型。另外,为了更好地回答这个问题,了解您是如何对模型进行排序的会有所帮助。我不确定我是否了解您-我的后端如何对这些记录进行排序有什么关系?还有-如果我不将排序发送到服务器,您认为这将如何工作?抱歉-我不确定您是否理解这个问题?您是对的,没有从您的问题中意识到排序影响了返回的数据。问题是您在路由上而不是在控制器上设置模型<代码>\u this.controllerFor('my-route').set('model',model)代码>啊哈AAA-我确实让它工作了,但方式不同。我一进办公室就跟你胡说。把它设置为一个答案,我会把它标记为正确:)好的工作伙伴-我讨厌控制器和路由之间的这种奇怪-我听说控制器将一起工作-这将如何处理?!可路由组件。当你停下来想一想,你把动作放在控制器上,而在视图中几乎什么都没有,把它们结合起来是有意义的,这基本上就是一个组件的全部。