我正在使用最新版本的Ember.js(目前是4.0之前版本),我也在使用RequireJS。渲染我的所有模板时出现问题。当所有模板都包含在单个html文件中的脚本标记内时,Ember将查找并呈现我的所有模板。但是当我使用text插件使用requirejs将它们分开时,它无法呈现任何内容,甚至显示任何错误。
main.js
(function(){
window.App = Ember.Application.create({
rootElement: '#wrapper',
LOG_TRANSITIONS: true
});
requirejs.config({
paths: {
'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min',
},
// Use shim for plugins that does not support AMD
shim: {
},
});
window.compile = function(name, template) {
return Ember.TEMPLATES[name] = Ember.Handlebars.compile(template);
};
})();
define([
'segmentation',
'text',
// Controllers:
'controllers/index',
// Views:
'views/index',
// Routes:
'routes/index',
'router'
], function(Segmentation) {
}
);
router.js
define([], function(){
App.Router.map(function() {
this.route("index", {
path: "/"
});
});
App.Router.reopen({
location: 'history'
});
});
路由/ index.js
define([], function(){
console.log(App);
App.IndexRoute = Ember.Route.extend({
setupController: function(controller) {
console.log(1);
// Set the IndexController's `title`
controller.set('controller', this.container.lookup('controller:index'));
},
renderTemplate: function() {
this.render('index');
}
});
});
最后是模板和视图:
应用程序视图
define([
'text!templates/application.html'
], function(template){
App.ApplicationView = Ember.View.extend({
template: Ember.Handlebars.compile( template )
});
});
申请模板
<center>
<h1>HEADER</h1>
<small>small</small>
</center>
<hr/>
<div id="content">{{outlet}}</div>
可能不需要所有这些代码转储,但只是因为有人要求它。当我将模板包装在脚本标签中并将它们插入到html文件中时,一切都像魅力一样。
任何解决方案?