2

私がこれまでに持っているもの:

App = Ember.Application.create({
    LOG_TRANSITIONS: true
});


App.Router.map(function(match){
    match('/').to('application');
    match('/edit').to('edit');
});


App.ApplicationRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('edit');
    },
    events: {
        startEdit: function( context ){
            this.transitionTo( 'edit' );
        }
    }
})

App.EditRoute = Ember.Route.extend({
    init: function(){
        this._super()
        console.log('EditRoute')
    },
});

ハンドルバー:

<script type="text/x-handlebars" data-template-name = 'application'>
    Hello World
    {{ outlet main }} 
</script>

<script type="text/x-handlebars" data-template-name = 'edit'>
    <div class = 'edit-background'> Edit State: {{ title }} </div>
</script>

4 つの質問があります。

  1. アプリケーションを開くと、ホームページにそのまま残ります。redirectTo フックは、すぐに別の状態にリダイレクトすると想定していますか?

  2. さらに、AplicationRouteここからの提案ごとにこのイベントハッシュを持っています: How to programmatically transition between routes using Ember.js' new Router . しかし、私は答えを読んでも、あなたがそれをどのように使用することになっているのかまだわかりません.

  3. コンソールでルーターをテストするにはどうすればよいですか? コマンドを呼び出して状態間を移動する前に、次はtransitionTo何をすればよいですか?

  4. 何らかの奇妙な理由で、アプリケーション テンプレートが 2 回レンダリングされているように見えます。そこには 2 つの「Hello World」があり、次のようなものを追加しようとすると、次のようになります。<li>{{#linkTo edit}}edit{{/linkTo}}</li>

次のエラーが表示されます。

'Uncaught TypeError: Cannot read property 'container' of undefined   --  ember.js:2223' 
4

1 に答える 1

2

これは、アプリケーションの起動時に editView/route/template を最初にロードする方法です。

ルーター

App.Router.map(function(match){
  match('/').to('application',function(match){
    match('/').to('edit')
  })
})

アプリケーション テンプレート

<script type="text/x-handlebars" data-template-name="application">
    {{outlet}}
</script>

テンプレートの編集

<script type="text/x-handlebars" data-template-name="edit">
    I am embedded! 
</script>

編集ルート

EditRoute = Ember.Route.extend({
  renderTemplates:function () {
      this.render('edit', {
      into:'application'
   });
})
于 2013-01-09T14:50:08.230 に答える