2014-06-10 136 views
2

我想創建EmberJs/RequireJs應用程序並遇到問題。根據例子,我定義我的app.js這樣的:EmberJs路由

(function() { 
define(['../app/routing'], function (routing) { 
    return { 
     Router: routing, 
     LOG_TRANSITIONS: true 
    }; 
}); 
}()); 

,routing.js爲:

(function (root) { 
    define(["ember"], function (Ember) { 
     var router = Ember.Router.extend({ 
      todosRoute: Ember.Route.extend({ 
       viewName: 'todos', 
       model: function(){ 
        return this.todos.find('todos'); 
       } 
      }) 
     }); 
     return router; 
    }); 
}(this)); 

和main.js:

require(['app', 'ember'], function(app, Ember){ 
      var app_name = config.app_name || "app"; 
      root[app_name] = app = Ember.Application.create(app); 

我的問題是,無論我如何定義我的路線,我都無法讓他們工作,而且還報告說,這樣的路線不存在。

如何定義路由並將它們作爲參數對象傳遞給Application.create(obj)?如果可能的話,我仍然希望將它們保存在單獨的文件中。 請注意,routing.js應該main.js之前執行,因此就像是在教程

+1

我不確定您的示例來自哪裏,但路由類不屬於路由器。 http://emberjs.com/guides/routing/defining-your-routes/ – Kingpin2k

回答

4

JS推薦的應用的對象不可/ app.js

App = Ember.Application.create(); 

App.Router.map(function() { 

    this.route('index', { 
    path: '/' 
    }); 

    this.route('about'); 

}); 

App.IndexRoute = Ember.Route.extend({ 
    // 
}); 

我知道你會想把這些全部放到不同的文件中,但是你是否能夠在簡單的環境中工作?

至於要求JS的東西......我不太瞭解 - 但似乎有一個線程在這裏:Ember.js and RequireJS,它的底部。

2

讓你router.js文件是這樣的:

(function (W) { 
'use strict'; 

define([ 
    'ember' 
], function (Ember) { 
    var Router; 
    Router = Ember.Router.extend(); 

    Router.map(function() { 
     var _this = this; 

     _this.route('index', {path: '/'}); 
     _this.route('todos', {path : '/todos/'}); 
    }); 
    return Router; 
}); 

})(window); 

對於個別路線,添加新的文件。

(function (W) { 
'use strict'; 

define([ 
    'ember', 
    'models/todosModel' 
], function (Ember, TodosModel) { 
    var TodosRoute; 

    TodosRoute = Ember.Route.extend({ 
     model: function() { 
         return TodosModel; 
     } 
    }); 

    return TodosRoute; 
}); 

})(window); 

將個別路由添加到您的app.js返回的對象。