1

ember1.0.0-pre3を使用する

私はこのコードを持つ小さなアプリを持っています:

window.App = Ember.Application.create()

App.ApplicationController = Ember.Controller.extend({})

App.Router.reopen
  location: 'history'

App.Router.map ->
  @resource 'users', ->
    @route 'new'

App.IndexRoute = Ember.Route.extend
  renderTemplate: ->
    @render('index')

これは、templatesディレクトリのapplication.hbsです。

<div class='navbar navbar-inverse navbar-fixed-top'>
  <div class='navbar-inner'>
    <div class='container'>
      <div class='nav-collapse collapse'>
        <ul class='nav'>
          <li>{{#linkTo 'index'}}Home{{/linkTo}}</li>
          <li>{{#linkTo 'users.index'}}Users{{/linkTo}}</li>
        </ul>
      </div>
    </div>
  </div>
</div>
<div class='container' id='main'>
  <div class='content'>
    <div class='row'>
      <div class='span12'>
        <div class='page-header'></div>
        {{outlet}}
      </div>
    </div>
  </div>
</div>

問題は、このテンプレートがレンダリングされないことです。ベースURL「http://127.0.0.1:3000/」でアプリをロードするときにエラーはスローされません。未定義のルートを試行するとエラーがスローされるため、Emberがロードされていることがわかります。

4

1 に答える 1

2

残り火コードに問題はないようです。jsbinにコピーを作成しましたが、正常に動作します:http: //jsbin.com/ipivoz/1/edit

これは、テンプレートがコンパイルされていないことを意味します。確かに、アプリケーションレディフックに以下を追加してみてください。

window.App = Ember.Application.create({
  ready: function() {
    console.log("Ember.TEMPLATES: ", Ember.TEMPLATES);
  }
});

Emberは、コンパイルされたハンドルバーテンプレートがこの配列にあることを想定しています。jsコンソールを開いた状態で上記のjsbinを実行すると、配列に1つのテンプレート「アプリケーション」があることがわかります。私の推測では、環境で同じことを試してみると、配列は空になります。

それを行うには多くの方法がありますが、それは環境によって異なります。あなたはポート3000で走っているので、それはレールだと思います。その場合は、残り火のレールの宝石をチェックしてください。はるかに簡単な短期的なアプローチはscript、jsbinで行ったように、HTMLページ内のタグを使用してテンプレートを定義することです。

于 2013-01-19T16:39:04.253 に答える