如何在流星IonPopup.show中

时间:2015-09-29 22:54:39

标签: javascript meteor ionic meteoric

我正试图在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.

2 个答案:

答案 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]);