2012-06-21 129 views
0

我嘗試在Ember.js中使用路由,但它似乎沒有正常工作。在Ember.js中路由

完整的代碼here on Github,但部分低於:

define(['ember', 'app/controllers/controller', 'app/views/view'], function (ember, controller, view) { 
    var Router = Ember.Router.extend({ 
     root: Ember.State.extend({ 
      index: Ember.State.extend({ 
       // location: Ember.Location.create({style: 'hash'}), 
       location: 'hash', 
       enableLogging: true, 
       route: '/', 
       redirectsTo: 'news.index' 
      }), 
      news: Ember.State.extend({ 
       route: '/news', 
       // showPost : Ember.State.transitionTo('post'), 
       test: Ember.ViewState.extend({ 
        route: '/test', 
        view: view.appendTo('body') 
       }), 
       index: Ember.ViewState.extend({ 
        route: '/', 
        view: null 
       }) 
      }) 
     }) 
    }); 
    var router = Router.create({}); 
    return router; 
}); 
+1

你有什麼錯誤?路線沒有被正確地遵守?請給出更多的輸出 – nembleton

回答

4

我想你需要你的代碼改成這樣:

define(['ember', 'app/controllers/controller', 'app/views/view'], function (ember, controller, view) { 
    var Router = Ember.Router.extend({ 
     // These are properties of Ember.Router and should be defined here 
     location: 'hash', 
     enableLogging: true, 

     root: Ember.State.extend({ 
      index: Ember.State.extend({ 
       route: '/', 
       redirectsTo: 'news.index' 
      }), 
      news: Ember.State.extend({ 
       route: '/news', 
       // showPost : Ember.State.transitionTo('post'), 
       test: Ember.ViewState.extend({ 
        route: '/test', 
        view: view.appendTo('body') 
       }), 
       index: Ember.ViewState.extend({ 
        route: '/', 
        view: null 
       }) 
      }) 
     }) 
    }); 
    var router = Router.create({}); 
    return router; 
}); 

讓我知道是否可行。

更新

其實你不應該使用ViewState的要麼。這是貶值。按照指南http://emberjs.com/guides/outlets/

+0

嘿羅伊,謝謝你的回覆。我知道爲什麼它不起作用。我對路由器進行了一些更改,現在可以使用。你是對的,我不應該再使用Viewstate,而是使用Ember.Route(使用最新的Ember.js)。你可以看看https://github.com/baothy/amberEx1 – bao