1

これを行う方法がよくわかりません。基本的に、スコープ内にいくつかのフィールドを持つカスタム メッセージ ディレクティブ (要素として) があります。その中には、テキストを含むcontentフィールドがあります。テキストには、URL (http/https で始まる) とハッシュタグ (# で始まり、スペース区切り) を含めることができます。

すべてのリンクとハッシュタグがハイパーリンクに変換されるように $scope.content を処理する慣用的な方法は何ですか?

4

2 に答える 2

0

「ハイパーリンクに変換された」とはどういう意味かよくわかりませんが、コンテンツを文字列の配列に分割するとします。リンク関数の要素に追加するよりも:

link: function($scope, iElm, iAttrs, controller) {
    var links = iElem.text().split(",");
    for (var i = 0; i < links.length; i++) {
        iElem.append("<a href='" + links[i] + "'>" + links[i] + "</a>");
    };
    $compile(iElm.contents())($scope);
}

append 関数については、代わりにUnderscoteテンプレート関数を使用することをお勧めします。

var linkTemplate = _.template('<a href="<%= link %>"><%= link %></a>');

そして、ループ呼び出しの中で

linkTemplate(links[i]);
于 2013-09-26T08:39:03.237 に答える