MeteorJS套餐:访问"事件"和#34;助手"包内的模板(内部)

时间:2017-01-19 12:03:00

标签: events meteor package

我创建了一个本地包并添加到我的项目中,并添加了模板。

package.js

`Package.onUse(function(api) {
  api.versionsFrom('1.4.2.3');
  api.use('templating', 'client');
  api.addFiles('server/main.js', 'server');
  api.addFiles('client/main.js', 'client');
  api.addFiles('client/main.html', 'client');
  api.mainModule('pkgName.js');
});`

我在 client / main.html 中创建了一个模板。

<template name="myTemplate">
    <button>Test</button>
</template>

然后在 client / main.js 中,我设置了事件监听器:

Template.myTemplate.events({
  'click button': function (e,t){ //do this on click };
})

但是当我运行应用程序时 - 我收到控制台错误

Uncaught TypeError: Cannot read property 'events' of undefined

1 个答案:

答案 0 :(得分:0)

好的 - 经过几个小时的研究后,似乎Package.onUse函数必须按照它们应该加载的顺序列出依赖项。

我认为加载顺序仅与主应用程序中的'packages'文件相关,但似乎您还需要按顺序加载依赖项。

所以这就修好了---

Package.onUse(function(api) {
  api.versionsFrom('1.4.2.3');
  api.addFiles('client/main.html', 'client');  

// I moved the html file above the javascript - so the DOM loads first and then the template exists for the event listener to listen to. 

  api.use('templating', 'client');
  api.addFiles('server/main.js', 'server');
  api.addFiles('client/main.js', 'client');
  api.mainModule('pkgName.js');
});