我想在他们的第一页上运行ember.js(版本1.0.0 Final)示例.
他们将每个车把模板分成带有.hbs扩展名的单独文件.
所以我只是复制了所有代码并创建了具有相同名称的文件.当我跑它们时,什么都没有.我正在尝试ROUTING的例子.
我的index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ember Starter Kit</title>
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap-theme.css">
</head>
<body>
<script src="js/libs/jquery-1.9.1.js"></script>
<script src="js/libs/handlebars-1.0.0.js"></script>
<script src="js/libs/ember-1.0.0.js"></script>
<script src="js/libs/bootstrap.js"></script>
<script src="js/app.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的模板在根目录中,我将它们复制到/templates但是没有帮助.
the*_*ack 23
当您在不同文件中有模板时,您必须加载它们并编译它们,因为EmberJS不检测文件.有几种方法可以做到这一点.
1)Ember.TEMPLATES
将它们加载到: Ember加载模板并将它们推入对象Ember.TEMPLATES.它small name根据EmberJS命名约定使用密钥存储模板内容.所以我们自己可以在编译后推送模板.
例如:如果你有一个名为'post'的模板,请post.hbs通过AJAX请求加载文件然后设置,
// "data" is html content returned from Ajax request
Ember.TEMPLATES['post'] = Ember.Handlebars.compile(data)
Run Code Online (Sandbox Code Playgroud)
所以现在你可以直接访问模板了
{{partial 'post'}}
Run Code Online (Sandbox Code Playgroud)
在把手中或设置templateName为任何视图类.
App.OtherView = Ember.View.extend({
templateName: 'post'
});
Run Code Online (Sandbox Code Playgroud)
因此,您可能必须通过AJAX请求最终加载所有HBS文件并在加载应用程序之前编译它们.这对应用程序来说是一个很大的开销.
为了简化这一点,我们可以预编译所有模板并将它们保存为JS(实际上将它们推送到Ember.TEMPLATES对象)并加载JS.这可以使用插件ember-templates实现,该模板也可用作grunt job grunt-ember-templates.
2)第二种方法是创建一个视图对象,并在AJAX请求之后将编译后的代码设置为每个视图的模板.文本插件requirejs可以帮助您实现这一目标.
如今,Ember人建议不要创建一个视图对象,除非有必要,我建议你按照第一种方式.预编译的选项是最佳选择,每次创建模板时都会减少大量工作.
更新:有一些项目构建工具负责编译把手模板.Yeoman和Ember-Cli是你可以看一次的.
| 归档时间: |
|
| 查看次数: |
14532 次 |
| 最近记录: |