私はAngular Bootstrapを使用して角度でカートアプリケーションを作成しています。角度ブートストラップツールチップ動的コンテンツ
カートアイコンにカーソルを合わせるとツールチップが表示されます。アイテムが既にカートに入っているかどうかに基づいて、ツールチップのコンテンツが変更されます。
だから、ここhtmlです:
<h3><i class="fa fa-shopping-basket" ng-click="add2Cart(item.Name)" tooltip-placement="right" uib-tooltip-html="itemtooltiptext(item.Name)" aria-hidden="true"></i></h3>
基本的には、アイテムがカートにすでに存在するかどうかを確認するために、私は、ツールヒントのテキストは、関数から解決したいです。ドキュメントからの私の理解は、HTMLが信頼できる限り、これがサポートされているということです。
それは言う、
uib-tooltip-html
$は - HTML文字列に評価する式をとります。このHTMLはコンパイルされないことに注意してください。コンパイルが必要な場合は、代わりにuib-tooltip-template属性オプションを使用してください。ユーザーはコンテンツがDOMに入れても安全であることを保証する責任があります!
だから私のitemtooltiptext()
機能は...
$scope.itemtooltiptext = function(name) {
if (localStorage.getItem("cart") === null) {
return $sce.trustAsHtml("Add " + name + " to Cart!");
} else {
var cart = JSON.parse(localStorage.getItem("cart"));
for (var i = 0; i < cart.length; i++) {
if (cart[i] == name) {
console.log("already in cart");
return $sce.trustAsHtml(name + "already in Cart!");
}
}
return $sce.trustAsHtml("Add " + name + " to Cart!");
}
}
ここに詳述されているようにこれは
無限$ダイジェストループ誤差
になります:https://stackoverflow.com/a/19370032
しかし、問題はさまざまな条件の関数から来る必要があるということですか?だから私はテンプレートを使用する必要がありますか?テンプレートから動的テキストを提供する必要があるため、どのようにうまくいくのかわかりません...解決策は何ですか?
ありがとうございます。
あなたは[plunk](HTTPSを作ることができます.co /)? – svarog