2

Meteor にマークダウン パッケージをインストールしました。

meteor add markdown

そして、それを正常にテストします:

<body>
  {{#markdown}}
     #Hello world!#
  {{/markdown}}
</body>

Ok!
今、ファイルからマークダウンをインポートしたいのですが、この方法で試してみました:

if (Meteor.isClient) {
  Session.set("markdown_data","MDFile.md");

  Template.myTemplate.helpers({
    markdown_data: function() {
      return Session.get("markdown_data");
    }
  });
}

そしてhtmlで:

<body>
  {{#markdown}}{{{markdown_data}}}{{/markdown}}
</body>

しかし、WebページにもWebコンソールにも端末にも何も表示されません。

どこが間違っていますか?

更新 - 作業コード

if (Meteor.isClient) {

  Markdown = new Mongo.Collection("markdown");
  
  Template.myTemplate.helpers({
    markdown_data: function() {
      var markdown = Markdown.findOne();
      return markdown && markdown.data;
    }
  });

 }

if (Meteor.isServer) {
    Markdown = new Mongo.Collection("markdown");
    Meteor.startup(function () {
      if(Markdown.find().count()===0){
        Markdown.insert({
               data: Assets.getText("teamProgramming.md")
        });
      }
  });
}
4

2 に答える 2

3

この方法では機能しません。マークダウン ファイルをプライベート ディレクトリに置き、アセット サーバー側としてロードして、コレクションを使用してクライアントに送信する必要があります。

プライベート/MDFile.md

#Hello world!#

lib/collections/markdown.js

Markdown=new Mongo.Collection("markdown");

サーバー/startup.js

Meteor.startup(function(){
  if(Markdown.find().count()===0){
    Markdown.insert({
      data: Assets.getText("MDFile.md");
    });
  }
});

サーバー/コレクション/markdown.js

Meteor.publish(function(){
  return Markdown.find();
});

クライアント/ビュー/main.html

<body>
  {{#markdown}}
    {{markdownData}}
  {{/markdown}}
</body>

クライアント/ビュー/main.js

Template.body.helpers({
  markdownData:function(){
    var markdown=Markdown.findOne();
    return markdown && markdown.data;
  }
});
于 2015-03-23T14:36:55.783 に答える
1

データベースなしでよりエレガントに行うことができます。Meteorメソッドを使用するだけです。

フォルダーにtest.mdマークダウンファイルがあるとします/private

server/methods.js

Meteor.methods({
    'getMarkdown'(markdownFile) {
        return Assets.getText(markdownFile);
    }
});    

client/helpers.js

Template.registerHelper('getMarkdown', (markdownFile) => {
    // if there is first no empty line in markdownFile
    // meteor's markdown helper renders <h1> as <pre>
    return '\n' + ReactiveMethod.call('getMarkdown', markdownFile);
});

ヘルパーから meteor メソッドを呼び出すにはsimple:reactive-method、このソリューションのこのパッケージを使用しました ヘルパーから Meteor メソッドを呼び出すのは悪い考えですか? この場合ではないことを願っています (これにより *md ファイルのロードが簡素化されます)。

最後に、あなたのテンプレートで

<template name="loadMarkdown">
    {{#markdown}}
        {{getMarkdown 'test.md'}}
    {{/markdown}}
</template>
于 2016-04-19T14:02:27.360 に答える