Overflow: hidden テキストに省略記号を追加する AngularJS ディレクティブを作成しました。Firefox では動作しないようです。また、可能な限り適切に構成したとは思えません。フローは次のとおりです。
- HTML 要素にディレクティブ属性を追加する
- ディレクティブは ng-bind 属性をスコープに読み込みます
- リンク関数の ng-bind への変更を監視するディレクティブ
- ng-bind の変更では、ディレクティブは、テキストを分割して省略記号を追加する場所を決定するために、いくつかの凝った計算を行います (このコードはここには含めていません。動作すると仮定してください)。
- ディレクティブは要素の HTML をこの新しい文字列に等しく設定し、ng-bind には触れません
HTML
<p data-ng-bind="articleText" data-add-ellipsis></p>
指令
app.directive('addEllipsis', function(){
return {
restrict : 'A',
scope : {
ngBind : '=' // Full-length original string
},
link : function(scope, element, attrs){
var newValue;
scope.$watch('ngBind', function () {
/*
* CODE REMOVED - Build shortened string and set to: newText
*/
element.html(newText); // - Does not work in Firefox and is probably not best practice
});
}
};
});
問題の行は、ディレクティブの最後の行です。
element.html(newText)
テンプレートスタイルのアプローチを使用する必要があると思いますか? 答えに最も近づく方法がわかりません。助けてくれてありがとう。