0

Jade ビューで段落タグ間のテキストを抽出しようとしましたが、うまくいきません。

私の主題:

<p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p>

翡翠ビュー:

- var content = post.content.slice('/<p>(.*?)<\/p>/g');
p #{content}

結果:

<
4

2 に答える 2

1

サーバー側で段落タグ間のテキストを抽出する必要があるのはなぜですか??

これは、クライアント側の js で行うことです


あなたの場合、またはcontextによって jade ビューに渡すパラメーターである必要がありますres.render('view', {context : "My content."})res.locals

#{context}ジェイドビューで対処できるように

contextJadeビューで変数を宣言したい場合

それは次のようになるはずです

-var context= "私のコンテンツ。"

p #{コンテンツ}


jsdomコードに返信する

あなたのコードで

posts[i]未定義です。

投稿を繰り返したいと思うので、iteratorhereを使用する必要があります

asyncここでモジュールを使用できます

この場合、map非常に適しています

ドキュメントはこちらをご覧ください - >非同期マップ

Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(creations) {
    Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){

async.map(posts, function(postEntity, callback){
jsdom.env(
            postEntity.content,
            ["http://code.jquery.com/jquery.js"],
            function(errors, window) {
                //deal with errors
                if(errors) return callback(errors);

                postEntity.content = window.$("p").text();
                callback(null, postEntity);
            }
        );
}, function(err, transformedPosts){
    if(err) return callback(err);
    res.render('index', {
        creations: creations,
        posts: transformedPosts,
        title: "Anthony Cluse | Portfolio"
    });
});

    
});
});

参考までに、制御フロー ライブラリを使用してコールバック コードを管理する必要があります

そうしないと、維持するのが本当に難しいでしょう

私はお勧めasync

于 2013-02-20T13:23:12.743 に答える
0
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
    Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
        console.log(posts[i].content);
        jsdom.env(
            posts[i].content,
            ["http://code.jquery.com/jquery.js"],
            function(errors, window) {
                posts[i].content = window.$("p").text();
            }
        );
        i++;
        res.render('index', {
            creations: creations,
            posts: posts,
            title: "Anthony Cluse | Portfolio"
        });
    });
});
于 2013-02-21T07:59:00.340 に答える