簡體   English   中英

Ember.js路由,無法訪問控制器

[英]Ember.js routing, can't access controller

我已經啟動了小型余燼應用程序,我認為:

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>

我的問題是當我在路由http://localhost:3000/我的searchController無法正常工作,但是當URL為http://localhost:3000/#/ ,一切正常,為什么?

Ember的默認設置是使用基於哈希的路由。 您可以通過重新打開路由器並切換到HTML5位置api來更改它。

App.Router.reopen({
  location: 'history'
});

編輯:我認為這里有一個版本不匹配。 這似乎是舊版本的余燼。

在當前版本中,您無需手動創建控制器。 您提供一個控制器並extend ArrayControllerObjectController

您將不再有對App.SearchController的引用。 您可以通過{{action}}幫助器發送事件或在控制器上調用方法。

有很多差異,建議您快速閱讀《 Ember入門指南》以刷新更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM