以 ember 方式对 parent 的模型进行排序
Sorting parent's model the ember way
在简单、标准的 ember.js 路线中...
this.resource('foo', function () {
this.route('show');
this.route('new');
});
我有一个显示新按钮(link 到 foo/new
路由)和 foo
foo.bar
数据的 foo
模板52=](使用 foo
控制器以 link 到 foo/show
的排序方式)
import Ember from 'ember';
export default Ember.Controller.extend({
sortProperties: [ 'bar:desc' ],
sortedList: Ember.computed.sort('model', 'sortProperties')
});
路由 foo/show
和 foo/new
很明显,没什么特别的。
我不需要也不想要 "real" foo/index
路线,因为 foo
路线和模板满足了我所有的导航需求。因此,我想 transitionTo
从 foo/index
进入第一条路线(如上面的排序所示) foo/show
路线(或者 foo\new
如果没有什么显示)。
我了解到 "the ember way" 是要 transitionTo
离开航线,但永远不会离开控制器。
现在,我的问题是,我可以很容易地访问未排序的数据(这是我的 parent 路由的模型,我可以通过 modelFor
访问)并且我可以对其进行排序"manually",但我宁愿使用我的 parent 控制器中已经排序的数据。现在,我有点不知道在路由中使用哪个挂钩来确保我的 parent 路由的控制器的计算属性已准备就绪 - 但感觉不对。那么,ember 的方法是什么?
编辑:Non-working 示例 http://emberjs.jsbin.com/hujoxigami/2/edit?html,js,output ...
使用您在其中一条评论中提到的 afterModel
挂钩。
App.FooIndexRoute = Ember.Route.extend({
afterModel: function(posts, transition) {
if (posts.get('length') > 0) {
this.transitionTo('foo.show', posts.get('firstObject'));
}
}
在 return 从 FooRoute
之前对模型进行排序没有任何问题。 (如果你能收到已经从你的 API/data 存储中排序的它就更好了)
App.FooRoute = Ember.Route.extend({
model: function() {
// not fully functional, just illustrative
return [{id:1, name:"Hans", detail:"german"},
{id:3, name:"Henri", detail:"french"},
{id:2, name:"Harry", detail:"english"}].sortBy('name');
}
});
如果您想为用户提供排序控件,控制器中的排序属性仍然相关。
在简单、标准的 ember.js 路线中...
this.resource('foo', function () {
this.route('show');
this.route('new');
});
我有一个显示新按钮(link 到 foo/new
路由)和 foo
foo.bar
数据的 foo
模板52=](使用 foo
控制器以 link 到 foo/show
的排序方式)
import Ember from 'ember';
export default Ember.Controller.extend({
sortProperties: [ 'bar:desc' ],
sortedList: Ember.computed.sort('model', 'sortProperties')
});
路由 foo/show
和 foo/new
很明显,没什么特别的。
我不需要也不想要 "real" foo/index
路线,因为 foo
路线和模板满足了我所有的导航需求。因此,我想 transitionTo
从 foo/index
进入第一条路线(如上面的排序所示) foo/show
路线(或者 foo\new
如果没有什么显示)。
我了解到 "the ember way" 是要 transitionTo
离开航线,但永远不会离开控制器。
现在,我的问题是,我可以很容易地访问未排序的数据(这是我的 parent 路由的模型,我可以通过 modelFor
访问)并且我可以对其进行排序"manually",但我宁愿使用我的 parent 控制器中已经排序的数据。现在,我有点不知道在路由中使用哪个挂钩来确保我的 parent 路由的控制器的计算属性已准备就绪 - 但感觉不对。那么,ember 的方法是什么?
编辑:Non-working 示例 http://emberjs.jsbin.com/hujoxigami/2/edit?html,js,output ...
使用您在其中一条评论中提到的 afterModel
挂钩。
App.FooIndexRoute = Ember.Route.extend({
afterModel: function(posts, transition) {
if (posts.get('length') > 0) {
this.transitionTo('foo.show', posts.get('firstObject'));
}
}
在 return 从 FooRoute
之前对模型进行排序没有任何问题。 (如果你能收到已经从你的 API/data 存储中排序的它就更好了)
App.FooRoute = Ember.Route.extend({
model: function() {
// not fully functional, just illustrative
return [{id:1, name:"Hans", detail:"german"},
{id:3, name:"Henri", detail:"french"},
{id:2, name:"Harry", detail:"english"}].sortBy('name');
}
});
如果您想为用户提供排序控件,控制器中的排序属性仍然相关。