4

这是我的场景,第一个使用Meteor的项目:我的 MongoDB 文档中嵌入了 JSON 字符串化数据,您可以在下面的 MESSAGE 键中看到:

{ "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 回答