2014-06-10 103 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返回的对象。