これを行う方法がよくわかりません。基本的に、スコープ内にいくつかのフィールドを持つカスタム メッセージ ディレクティブ (要素として) があります。その中には、テキストを含むcontentフィールドがあります。テキストには、URL (http/https で始まる) とハッシュタグ (# で始まり、スペース区切り) を含めることができます。
すべてのリンクとハッシュタグがハイパーリンクに変換されるように $scope.content を処理する慣用的な方法は何ですか?
これを行う方法がよくわかりません。基本的に、スコープ内にいくつかのフィールドを持つカスタム メッセージ ディレクティブ (要素として) があります。その中には、テキストを含むcontentフィールドがあります。テキストには、URL (http/https で始まる) とハッシュタグ (# で始まり、スペース区切り) を含めることができます。
すべてのリンクとハッシュタグがハイパーリンクに変換されるように $scope.content を処理する慣用的な方法は何ですか?
「ハイパーリンクに変換された」とはどういう意味かよくわかりませんが、コンテンツを文字列の配列に分割するとします。リンク関数の要素に追加するよりも:
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]);