Javascript Ember.js路由,can';t访问控制器

Javascript Ember.js路由,can';t访问控制器,javascript,ember.js,url-routing,Javascript,Ember.js,Url Routing,我已启动小余烬应用程序,我有以下看法: Cellar.SearchTextField = Ember.TextField.extend({ insertNewline: function(){ Cellar.SearchController.loadResults(); } }); 和控制器: Cellar.SearchController = Ember.ArrayController.create({ content: [], searchQuery:

我已启动小余烬应用程序,我有以下看法:

Cellar.SearchTextField = Ember.TextField.extend({
    insertNewline: function(){
      Cellar.SearchController.loadResults();
    }
});
和控制器:

Cellar.SearchController = Ember.ArrayController.create({
  content: [],
  searchQuery: "",
  loadResults: function() {
    var me = this;
    SC.get('/tracks', { q: me.get('searchQuery') }, function(tracks) {
      me.set('content', []);
      $(tracks).each(function(index, value){
        var track = Cellar.Track.create({
          id: value.id,
          artwork: value.artwork_url,
          download_url: value.download_url,
          duration: value.duration,
          stream_url: value.stream_url
        })
        me.pushObject(track);
      });
    });
  }
});
和一个应用程序模板:

<div class="navbar navbar-inverse navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container"></div>
      <h3 class="logo">{{#linkTo "index"}}Cellar{{/linkTo}}</h3>

      <form class="navbar-search">
        {{view Cellar.SearchTextField placeholder="search" valueBinding="Cellar.SearchController.searchQuery"}}
      </form>

    </div>
  </div>
</div>
<div id="content">
{{outlet}}
</div>

{{{链接到“索引”}地窖{{/linkTo}
{{view ceral.SearchTextField placeholder=“search”valueBinding=“ceral.SearchController.searchQuery”}
{{outlet}}

我的问题是当我在路线上时
http://localhost:3000/
my
searchController
不起作用,但当URL为
http://localhost:3000/#/
,为什么?

余烬默认使用基于散列的路由。您可以通过重新打开路由器并切换到HTML5位置api来改变这一点

App.Router.reopen({
  location: 'history'
});
编辑:我认为这里有一个版本不匹配。这似乎是旧版本的余烬

在当前版本中,您不会手动创建控制器。您可以提供一个控制器和
extend
ArrayController
ObjectController

您将不再具有对App.SearchController的引用。您可以通过
{{action}
帮助程序在控制器上发送事件或调用方法


有很多不同之处,我建议快速阅读以刷新更改。

余烬默认使用基于散列的路由。您可以通过重新打开路由器并切换到HTML5位置api来改变这一点

App.Router.reopen({
  location: 'history'
});
编辑:我认为这里有一个版本不匹配。这似乎是旧版本的余烬

在当前版本中,您不会手动创建控制器。您可以提供一个控制器和
extend
ArrayController
ObjectController

您将不再具有对App.SearchController的引用。您可以通过
{{action}
帮助程序在控制器上发送事件或调用方法


有相当多的差异,我建议快速阅读以刷新更改。

感谢您的回复,但url不是问题,我仍然无法从根路由访问searchController的操作。您可以在您的Router.mapSure中发布路由,但这是一个全新的路由器:
Cell.Router.map(function(){})有趣,尝试在jsbin上发布,我会看一看。Thx,我已将创建更改为扩展,并出现
未捕获的TypeError
感谢您的回复,但url不是问题,我仍然无法从根路由访问searchController的操作。您能在路由器中发布路由吗。mapSure,但它是一个全新的路由器:
ceral.router.map(function(){})有趣,尝试在jsbin上发布,我会看一看。Thx,我已将create更改为extend,并出现了一个
未捕获的TypeError