我有一个自定义字段,可让您过滤模型列表(可以说在某些 ArrayController 上)
PersonApp.SearchField = Ember.TextField.extend({
keyUp: function(e) {
var search = this.get('value');
model = PersonApp.Page.create({term: search});
this.get('controller.target').transitionTo('person.search', model);
}
});
这是我用于分页和过滤/搜索的非常简单的模型
PersonApp.Page = Ember.Object.extend({
term: ''
});
我添加了一条适用于上述模型的简单路线
PersonApp.Router.map(function(match) {
this.resource("person", { path: "/" }, function() {
this.route("page", { path: "/page/:page_id" });
this.route("search", { path: "/search/:page_term" });
});
});
最后这是我的路线 setupController 方法
PersonApp.PersonSearchRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.controllerFor('person').set('filterBy', model.get('term'));
}
});
该过滤器确实有效(这意味着它确实使用我上面的 setupController 中的 filterBy 修改了 ArrayController)。
但在网址中,我看到以下内容
http://www.google.com/#/search/<PersonApp.Page:ember517>
代替
http://www.google.com/#/search/foo
有什么办法可以修改模型/路由/设置控制器来显示文本吗?
另外 - 这样的事情应该只是索引/主路由上的一个简单“事件”,而不是我上面的自定义路由吗?如果是这样,我仍然可以修改 url(我假设不是 - 所以这就是我现在将它作为路由的原因)