【发布时间】:2015-03-15 18:38:52
【问题描述】:
我有一个带有联系人页面的 ember 应用程序。我有一个用户列表,我想根据 a) 搜索查询和 b) 保存在 session.currentUser 模型上的过滤器(使用 ember-simple-auth-devise)进行过滤。
我的路线:
import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin).extend({
model: function() {
return this.store.find('user');
},
setupController: function(controller, model){
this._super(controller, model);
var currentUser = this.store.fetch('user', this.get('session').get('user_id'));
// console.log(currentUser);
controller.set('currentUser', currentUser);
}
});
我的控制器:
import Ember from 'ember';
export default Ember.ArrayController.extend({
searchText: '',
filterUsers : function() {
// Function to set the filteredUsers property, set in the route, based on the searchText
var searchText = this.get('searchText'), regex = new RegExp(searchText, 'i');
var us = this.get('model').filter(function(item) {
// Run some filters here...
});
this.set('filteredUsers', us);
return false;
}.observes('searchText', 'model'),
actions: {
// Click the "Filter" button and update the server
setFilters: function(){
this.get('session').get('currentUser').save();
}
}
});
这在一定程度上有效 - 在 searchText 字段中输入文本会运行我的过滤器。但是我有两个问题无法解决:
- 如何让 filterUsers 函数在模板首次加载时运行,以使用 currentUser 模型上设置的变量?
- 当我调用 setFilters 方法并更改当前用户时,如何让 filterUsers 运行?
非常感谢
【问题讨论】:
标签: ember.js