我正试图在Meteoric IonPopup中有一个评级表。我有一个显示表单的按钮:
Template.thing.events({
'click [data-action="showReview"]': function(event, template) {
IonPopup.show({
title: 'Leave a review',
cssClass : '',
templateURL: 'reviewPopup.html',
buttons: [{
text: 'Cancel',
type: 'button-default',
onTap: function(e) {
e.preventDefault();
}
}, {
text: 'OK',
type: 'button-positive',
onTap: function(e) {
return scope.data.response;
}
}]
});
}
});
理想情况下应将reviewPopup.html放在正文中
reviewPopup.html
<template name="reviewPopup">
{{#if currentUser}}
Rating: {{> rating}}
{{/if}}
</template>
<template name="rating">
<div class="rateit"></div>
</template>
但是我似乎无法使用templateURL选项。两个模板都在同一目录中。我是否正确认为我给它一个文件名,它只是将该文件的内容插入到正文中? IonPopup.show的文档说:
templateUrl: '', // String (optional). The URL of an html template to place in the popup body.
答案 0 :(得分:1)
看起来你指的是离子文档 - 流星跟随离子约定,但不是那么密切,你可以假设实现是相同的。使用meteoric的最佳方法是研究示例meteoric apps和looking through their code。
在这种情况下,the relevant code from the meteoric repo看起来像这样:
// Figure out if a template or just a html string was passed
var innerTemplate = '';
if (options.templateName) {
innerTemplate = Template[options.templateName].renderFunction().value;
} else if (options.template) {
innerTemplate = '<span>' + options.template + '</span>';
}
..所以看起来你想要使用templateName:
和你模板的名字,而不是离子的templateURL
。
希望有所帮助!!
答案 1 :(得分:1)
TemplateName中指定的模板只能包含静态HTML内容,或者根本不会呈现。我使用以下解决方法动态插入实际内容:
static
模板:
IonPopup.show({
title: 'notification',
templateName: 'dummyTemplate',
buttons: [{
text: 'Ok',
type: 'button-positive',
onTap: function() {
IonPopup.close();
}
}]
});
//Insert the actual template in the popup:
Blaze.render(Template.actualTemplate, $('#popupContent')[0]);