1

プロジェクトと呼ばれる流星コレクションがあります。各プロジェクトには、タイトルと説明があります。

テンプレート ヘルパーの説明フィールドからリッチ テキスト データを取得したいと考えています。

特定のプロジェクトの説明を取得するために、次のようなことを試みています。

Template.projectItem.helpers({
    description: function () {
        descriptionHTML = Projects.findOne(this._id, {description: {}}); // Get description field for project
        descriptionString = descriptionHTML.text(); // Strip html tags
        return descriptionString; // return description string
    }
});  

しかし、それは機能していません。テンプレートに表示する前にリッチ テキスト データを抽出する理由は、テンプレートに表示する前に HTML 書式設定タグからデータを取り除きたいからです。

1) コレクション内の特定のドキュメントの説明フィールドのみを取得するにはどうすればよいですか? jsファイルから説明フィールドにアクセスできるようにしたいです。

2) 説明を取得したら、html タグを簡単に削除するにはどうすればよいですか? 文字列変数で jQuery を使用できますか? お気に入り

description.text();
4

2 に答える 2

3

テンプレートヘルパーを登録する

現在のプロジェクトのグローバル ヘルパーを登録する

Handlebars.registerHelper('project', function() {
    projectId = Session.get('projectId');
    return Projects.findOne( projectId );
});

テンプレートで使用できます

{{#with project}}
    {{description}}
{{/with}}

また

{{project.description}}

アップデート

1. 説明をきれいにするヘルパーを作成します。

Handlebars.registerHelper('escapeContent', function(content){
    return _.escape(content);
});

{{escapeContent description}}

2.ヘルパーにエスケープされたコンテンツを返させる

Template.postItem.description = function() {
    return _.escape(this.description)    
}

3.または変換で実行できます。この部分はcoffeescriptで記述します

@Projects = 新しい Meteor.Collection 'プロジェクト'

Projects._transform = (project) ->
    project.description = _.escape project.desscription

テンプレートで行う必要はありません。

于 2013-09-24T07:26:35.680 に答える
0

具体的には、この問題を解決するために、これをテンプレート ヘルパー js ファイルに追加しました。

function strip(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}

Handlebars.registerHelper('stripContent', function(content){
    return strip(content);
});

次に、使用したテンプレートhtmlファイルで

{{stripContent description}}

魔法のように働きました!彼らの鍵は、非常に便利なハンドルバー登録ヘルパーを使用することです!

于 2013-09-25T02:32:44.153 に答える