Ember.js 如何根据动态段设置查询参数的默认值?
我正在为一些实体创建通用网格。为此,我在routes中添加了以下内容:Ember.js 如何根据动态段设置查询参数的默认值?,ember.js,Ember.js,我正在为一些实体创建通用网格。为此,我在routes中添加了以下内容: this.route('record', { path: '/record' },function() { this.route('index', {path: '/:entity'}); this.route('view', {path: '/:entity/:record_id'}); }); 并创建了新的“索引”路线: 我的控制器 export default Ember.ArrayController.
this.route('record', { path: '/record' },function() {
this.route('index', {path: '/:entity'});
this.route('view', {path: '/:entity/:record_id'});
});
并创建了新的“索引”路线:
我的控制器
export default Ember.ArrayController.extend({
queryParams: ['sort'],
sort: ''
}
如何设置基于动态段的“排序”的默认值?
例如,在我的设置中,我存储所有实体的排序值:
'settings.user.sort': 'email ASC',
'settings.company.sort': 'name ASC',
我试图将“sort”定义为computed属性,但当我无法从currentHadlerInfo或route获取动态段的值时,会及时调用它的“get”方法
另外,将属性“sort”定义为computed属性也会产生奇怪的效果,例如,当我将其定义为
sort: 'email ASC'
在我的模板中,它按预期通过{{sort}}显示(电子邮件ASC)。
但当我从computed属性返回一个值时,我在模板中看到空值,这会影响组件的工作(我无法获得当前排序列)
我能做什么?。这里是一个基于动态段值设置排序属性的粗略实现。代码如下所示
<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);
}
});
{{{#链接到'sort'model.settings.user.sort}}sort{{/link to}
{{{#每个内容都作为|项}排列
- {{item.val}}
{{/每个}}
var设置=Em.Object.create({
设置:{
用户:{
排序:“val ASC”
}
}
});
App.Router.map(函数(){
this.route('sort',{path:'/:sortparms'});
});
App.SortRoute=Ember.Route.extend({
参数:null,
型号:功能(参数){
此.set('params',params);
返回[{val:1},{val:5},{val:0}];
},
设置控制器:功能(控制器、型号){
这是超级控制器(控制器、型号);
var props=this.get('params').sortparms.split(“”);
var属性=[props[0]];
变量顺序=道具[1]=“ASC”?真:假;
controller.set('sortProperties',属性);
controller.set('sortAscending',order);
}
});
如您所见,我访问模型中的params对象
挂钩并将其存储在路由上。在setupController
hook中,我访问参数并在控制器上设置所需的值
<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);
}
});