我正在为某些实体创建通用网格。为此,我在路线中添加了这个:
this.route('record', { path: '/record' },function() {
this.route('index', {path: '/:entity'});
this.route('view', {path: '/:entity/:record_id'});
});
并创建了新的"索引"路线:
export default Ember.Route.extend({
entity: '',
queryParams: {
sort: {
refreshModel: true
}
},
beforeModel: function(transition) {
var entity = transition.params[this.get('routeName')].entity;
this.set('entity', entity);
},
model: function(params) {
delete params.entity;
return this.store.findQuery(this.get('entity'), params);
},
}
我的控制器
export default Ember.ArrayController.extend({
queryParams: ['sort'],
sort: ''
}
如何设置"排序"的默认值?基于动态细分? 例如,在我的设置中,我存储了所有entites的排序值:
'settings.user.sort': 'email ASC',
'settings.company.sort': 'name ASC',
我试图定义"排序"作为计算属性,但它的" get"当我无法从currentHadlerInfo或路由获取动态段的值时,会及时调用方法。
同时定义属性" sort"因为计算属性具有奇怪的效果,例如,当我将其定义为
时sort: 'email ASC'
在我的模板中,它按预期通过{{sort}}显示(电子邮件ASC)。 但是当我从compute属性返回一个值时,我在模板中看到空值,这会影响组件的工作(我无法获得当前的排序列)
我该怎么办?
答案 0 :(得分:0)
以下是基于动态段值设置排序属性的粗略实现。代码看起来像
<script type="text/x-handlebars" data-template-name="index">
{{#link-to 'sort' model.settings.user.sort}}Sort{{/link-to}}
</script>
<script type="text/x-handlebars" data-template-name="sort">
<ul>
{{#each arrangedContent as |item|}}
<li>{{item.val}}</li>
{{/each}}
</ul>
</script>
var settings = Em.Object.create({
settings: {
user: {
sort: 'val ASC'
}
}
});
App.Router.map(function() {
this.route('sort', {path: '/:sortParams'});
});
App.SortRoute = Ember.Route.extend({
params: null,
model: function(params) {
this.set('params', params);
return [{val:1}, {val:5}, {val:0}];
},
setupController: function(controller, model) {
this._super(controller, model);
var props = this.get('params').sortParams.split(' ');
var property = [props[0]];
var order = props[1] === 'ASC'? true : false;
controller.set('sortProperties', property);
controller.set('sortAscending', order);
}
});
The working demo can be found here.。
如您所见,我访问model
钩子中的params对象并将其存储在路径上。在setupController
挂钩中,我访问了参数并在控制器上设置了所需的值。