2014-05-07 56 views
1

我想要一个包来公开一个模板。我设法让模板正常工作,但我无法为其添加代码。如何在包中包含模板代码

这里是什么工作:

package.js

Package.describe({ 
    summary: "Dashboard" 
}); 

Package.on_use(function(api){ 
    api.use('coffeescript', ['client', 'server']); 
    api.use('templating', 'client'); 

    api.add_files(['dashboard.html'], 'client'); 
}); 

dashboard.html

<template name="dashboard"> 
    <h1>Hello Dashboard</h1> 
</template> 

然后我就可以使用它在我的应用程序,像这样:

{{> dashboard}} 

这里是行不通

package.js

Package.describe({ 
    summary: "Dashboard" 
}); 

Package.on_use(function(api){ 
    api.use('coffeescript', ['client', 'server']); 
    api.use('templating', 'client'); 

    api.add_files(['dashboard.html', 'dashboard.coffee'], 'client'); 
}); 

dashboard.html

<template name="dashboard"> 
    <h1>Hello Dashboard</h1> 
    {{name}} 
</template> 

dashboard.coffee

Template.dashboard.helpers 
    name: -> "John Doe" 

的错误是:

Uncaught TypeError: Cannot read property 'helpers' of undefined

+1

只要将coffeescript放入'Meteor.startup'块中,它应该可以正常工作。 – richsilv

+0

@richsilv它的工作原理,但我怎么没有看到大气中的任何包使用Meteor.startup模板代码?他们都直接使用Template.blah.helpers。 – Manuel

回答

0

尝试在使用列表中添加句柄api.use(['templating','handlebars'],'client');

+0

同样的错误发生 – Manuel

+0

'api.use(['templating','spacebars','ui'],'client')'? –

+0

同样的错误,当我不把代码包装在像richsilv提到的Meteor.startup块中。不知道为什么。 – Manuel

0

您可能会检查其使用的CoffeeScript和模板,在你的情况下常用软件的源代码 - 就像accounts-entry

下面是它的package.js

https://github.com/Differential/accounts-entry/blob/master/package.js

所以,最重要的是:

api.use([ 
    'templating', 
    'handlebars', 
    'coffeescript'] 
    , 'client'); 
+0

同样的错误,当我不把代码包装在像richsilv提到的Meteor.startup块中。不知道为什么。 – Manuel

相关问题