2012-06-21 127 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