Javascript Ember.js在视图中更改路由器语句

Javascript Ember.js在视图中更改路由器语句,javascript,ember.js,Javascript,Ember.js,假设我有一个观点: Cellar.SearchTextField = Ember.TextField.extend({ insertNewline: function(){ // Cellar.SearchController.loadResults(); } }); 我有一条路线: Cellar.Router.map(function() { this.route('search', { path: '/search'}); }); 提交视图的文本字段时,如

假设我有一个观点:

Cellar.SearchTextField = Ember.TextField.extend({
    insertNewline: function(){
      // Cellar.SearchController.loadResults();
    }
});
我有一条路线:

Cellar.Router.map(function() {
  this.route('search', { path: '/search'});
});
提交视图的文本字段时,如何将应用程序url更改为
host/#/search?

或者,在ember应用程序中实现搜索表单的最佳和最合乎逻辑的方法是什么?

我使用以下方法实现此功能:

App.SearchField = Ember.TextField.extend({
    insertNewline: function() {        
        this.get('controller').transitionToRoute('search', this.get('value'));
    }
});
这将转换到搜索路径,因此您可以在
model
hook上加载和过滤数据


是一个带演示的JSFIDLE

工具,谢谢。顺便问一下,有没有更好的方法来使用ember.js构建表单,将参数传递到url,并且在提交时不重新加载页面?嗯,这种方法不会像导航器中的f5那样重新加载页面。任何时候都需要通过dom操作或更改模板来替换内容以显示找到的数据。所以我认为这不是问题。我发现的另一个资源是,有点旧。但是,我仍然更喜欢我的方法,因为url将匹配搜索,举例来说:在文本字段中点击foo将成为中的url。所以您可以共享链接:),但在这种情况下,我必须实现作为对象的搜索查询?但是我更喜欢使用
host/search?query=amenra
作为示例,这样我可以在以后添加一些过滤器。您可以返回一个普通数组,并在模板中使用
{{this}}
而不是每个帮助器中的属性路径。我使用该对象只是为了搜索有关当前文本的信息。关于这个查询,ember没有现成的,你需要使用这个插件