大佬教程收集整理的这篇文章主要介绍了javascript – Ember.js如何引用Grunt.js预编译的Handlebars模板?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
而我的app.js Ember视图被这样声明(路由和控制器被忽略):
App.LogoView = Ember.View.extend({ templatename: 'logo',classNames: ['logo'] }); App.TabsView = Ember.View.extend({ templatename: 'tabs',classNames: ['tabs'] }); App.TabView = Ember.View.extend({ classNames: ['content'],tabPositions: { tab1: { width: '90px',left: '82px' },tab2: { width: '180px',left: '172px' },tab3: { width: '271px',left: '263px' } },animateTab: function() { var left,tab,width; tab = this.get('templatename'); width = this.get('tabPositions.' + tab + '.width'); left = this.get('tabPositions.' + tab + '.left'); Ember.run.next(function() { $('div.tabs').removeClass('tab1 tab2 tab3'); $('div.tabs').addClass(tab); $('div.slider div.foreground').stop().animate({ 'width': width },1000); $('div.slider div.handle').stop().animate({ 'left': left },1000); }); },didInsertElement: function() { this.animateTab(); } }); App.SliderView = Ember.View.extend({ templatename: 'slider',classNames: ['slider'] }); App.Tab1View = App.TabView.extend({ templatename: 'tab1' }); App.Tab2View = App.TabView.extend({ templatename: 'tab2' }); App.Tab3View = App.TabView.extend({ templatename: 'tab3' });
这是我的文件结构:
--/ |--js/ |--app.js |--ember.js |--handlebars.js |--jquery.js |--templates.js |--templates/ |--application.hbs |--logo.hbs |--slider.hbs |--tab1.js |--tab2.js |--tab3.js |--tabs.js |--Gruntfile.js |--index.html |--package.json |--server.js
所以我使用< script type =“text / x-handlebars”data-template-name =“slider”>我的index.html文件中的语法通过名称引用模板,并且工作正常.我不明白的是,Ember.js应该如何使用预编译的模板.
现在,我使用Grunt.js来编译它们,并将它们输出到templates.js.根据Ember文档,当应用程序加载时,它将查找应用程序模板.与index.html以及通过更改模板的文件名一起使用的是更改模板的名称吗?有人指出Ember.js使用预编译模板的方向正确吗?谢谢!
Ember希望将编译的模板添加到Ember.TEMPLATES属性中.当加载了一个ember应用程序时,它会检查任何句柄脚本标签并进行编译.然后,使用指定的data-template-name属性作为关键字,将每个模板添加到Ember.TEMPLATEs.如果没有提供数据模板名称,则将其密钥设置为应用程序.
除了那个余烬不在乎Ember.TEMPLATES如何进行.您可以手动添加/删除模板.例如,https://stackoverflow.com/a/10282231/983357演示了如何可以内联编译模板:
Ember.TEMPLATES['myFunkyTemplate'] = Ember.Handlebars.compile('Hello {{personNamE}}');
现在显然你不想以这种方式写你的模板,你想咕噜为你做,但是你可以看到没有任何魔法.
Ember不关心模板的文件名,它只是关心Ember.TEMPLATES [‘key / goes / here]中使用什么字符串作为关键字.也就是说,使用filename作为模板的关键是非常有意义的.
我想你的项目缺少的可能是编译的模板没有被添加到Ember.TEMPLATEs. AFAIK的grunt-contrib-handlebars插件不这样做.考虑使用grunt-ember-templates.
以上是大佬教程为你收集整理的javascript – Ember.js如何引用Grunt.js预编译的Handlebars模板?全部内容,希望文章能够帮你解决javascript – Ember.js如何引用Grunt.js预编译的Handlebars模板?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。