我正在尝试创建EmberJs / RequireJs应用程序并遇到问题。根据示例,我将app.js定义为:
(function () {
define(['../app/routing'], function (routing) {
return {
Router: routing,
LOG_TRANSITIONS: true
};
});
}());
,routing.js as:
(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);
我遇到的问题是,无论我如何定义我的路线,我都无法让它们发挥作用,emberJs也报告说这些路线不存在。
如何定义路由并将它们作为参数对象传递给Application.create(obj)?如果可能的话,我仍然希望将它们保存在单独的文件中。 请注意,routing.js应该在main.js之前执行,因此App对象不可用,就像在教程中建议的那样
答案 0 :(得分: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触及它的底部。
答案 1 :(得分: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返回的对象。