4

Meteorを使用した最初のプロジェクトである私のシナリオは次のとおりです。以下の MESSAGE キーでわかるように、MongoDB ドキュメントに JSON 文字列化されたデータが埋め込まれています。

{ "DATE" : "Jan 24 23:28:14",
  "MESSAGE" : **"{\"status_code\":200,\"uri\":\"172.16.156.143/content/dynamic\",\"tprocess\":3}"**,
  "_id" : ObjectId("5101c3992a1624e726000014") }

Meteor では、私のクライアント テンプレート コードは次の基本パターンのようになります。

Template.log.logEntry = function () {
    return Messages.find({});
};

...これは問題なく動作しますが、明らかに次のテンプレートをレンダリングします...

<template name="log">
    <h1>Log Entries Are:</h1>
        {{#each logEntry}}
            <div> : {{MESSAGE}} </div>
        {{/each}}
</template>

...ブラウザで解析されていないリテラル文字列を使用すると、たとえば、

{"status_code":200,"uri":"172.16.156.143/static/style.css","tprocess":2}

この文字列を JSON.parse() してもっと面白いことをしたいのですが、Meteor プロジェクトの JavaScript ファイルの isClient コンテキストからどのように実行すればよいかわかりません。

4

2 に答える 2

7

テンプレート ヘルパーを追加します。

Template.log.aSpecificField = function () {
  return JSON.parse(this.MESSAGE).aSpecificField;
}

これにより、ループ{{aSpecificField}}内で使用できます。#each

于 2013-01-26T05:37:59.737 に答える
2

これが最善の方法であるかどうかはわかりません (実際、そうではないと思います) が、これは期待どおりに機能します。

Template.log.helpers({
  get_uri: function () {
     return JSON.parse(this.MESSAGE).uri;
}

テンプレートで呼び出すのは次のとおりです。

{{ get_uri }}
于 2013-01-26T13:10:09.877 に答える