皆さん、ありがとうございました。質問はコメント内の提案ごとに編集されます。JavaScriptがMongoフィールドの値をすでに取得している - 流星
私はMongoとMeteorを初めて使っています。
私はフィールド "slug"を持つコレクション "posts"を持っています。
"投稿"テンプレートには、各投稿の値が正しく入力されています。スラグの価値は、常に「私の偉大なポスト」のようなものです。
_idのスラッグのテキスト値を取得する必要があります。この値は、テンプレートにアクセスするたびに異なり、エンコードし、文字列を書き出し、その文字列をテンプレートに戻します。
物事は、コレクションが定義されていても、テンプレートヘルパーやonRenderedのいずれかで「this.slug」または「this.data.slug」の値を返すことはできません
を試してみましたが、正しく移入しますテンプレート
「この」戻る「[対象オブジェクト]」の値を宇宙・天体バーIがジャバスクリプトエンコードするとき
アプリケーションがクラッシュをCONSOLE.LOGから文字列を提供しますおそらく私は完全に(私はそう下記、テンプレートHTMLにスクリプトを作成しようとして避けるために、コメントでアドバイスに従っドキュメントから
をヘルパーの構文を理解していないヘルパーは、支援する誰もが要求したより多くの情報であり、テンプレートHTML - -
{{#with post}}
<div class="blog-article">
<div class="blog-header">
<div class="left">
<!-- title -->
<h1 class="post-title">{{title}}</h1>
<div class="holder">
<div class="post-tags">
<!-- tags -->
{{#each tags}}
<span>{{this}}</span>
{{/each}}
</div>
</div>
</div>
</div>
<div class="blog-post">
<div class="blog-copy">
<!-- date -->
<div class="post-date">{{post_date}}</div>
<!-- social -->
<div class="blog-social">
<!--
<a class="so-facebook" target="_blank" href="need to encode slug here"></a>
-->
</div>
<!-- ============== post ============== -->
{{{content}}}
<!-- ============ end post ============ -->
</div>
</div>
</div>
{{/with}}
-
)このスレッドのテンプレートJS -
Template.post.onCreated(function() {
var self = this;
self.autorun(function() {
var postSlug = FlowRouter.getParam('postSlug');
self.subscribe('singlePost', postSlug);
});
});
Template.post.helpers({
post: function() {
var postSlug = FlowRouter.getParam('postSlug');
var post = Posts.findOne({slug: postSlug}) || {};
return post;
}
// can't get these working in a helper, out of helper they crash the app
// console.log(this.slug);
// console.log(this.data.slug);
});
Template.post.onRendered(function() {
// these do not work
// console.log(this.slug);
// console.log(this.data.slug);
});
db.posts.findOne()。
{
"_id" : ObjectId("576c95708056bea3bc25a91f"),
"title" : "How Meteor Raised the Bar For New Rapid-Development Technologies",
"post_date" : "May 28, 2016",
"image" : "meteor-raised-the-bar.png",
"slug" : "how-meteor-raised-the-bar",
"bitlink" : "ufw-29Z9h7s",
"tags" : [
"Tools",
"Technologies"
],
"excerpt" : "sizzling excerpt",
"content" : "bunch of post content html"
}
いくつかのいずれかのいずれかの方法を使用してこの問題を解決することができれば、私は喜びと最も強い感謝の気持ちで答えを受け入れます。メテオについて
ブレーズテンプレートは、スペースタグ(スクリプトタグなし)にする必要があります。 javascriptは.jsファイルになければなりません。流星はそれらを組み合わせます。私はあなたが実際にここでやろうとしていることについて少し混乱しています。なぜJSはテンプレートから価値を読み取る必要がありますか?データは逆の流れになるはずです。あなたが実際にやろうとしていることについてもっと教えていただけますか? –
はい、私は私のコメントを編集しました。私はonRenderedが "this.slug"(例えば "this.data.slug"も試してみました)を得ることができ、console.logに出力をレンダリングできると知っていますが、うまくいきません。それは "undefined"を返します。ある時点でレンダリングする値を得ましたが(今私はどのように忘れてしまったのですが)、新しいMongo _idのテンプレートがレンダリングされたときに値が保持されます。だから私はテンプレートのスクリプトを使ってテンプレートからそれを取得しようとし始めた...私はハッキーとハッキーの戦略に入って、まだ運がない。 – Deborah
完了 - "this"のように "[object Object]"が返されます。私は編集された質問にこれを入れます。 – Deborah