2017-05-02 8 views
0

私のjsオブジェクトは、二重引用符が含まれてコンパイル:UIをコンパイルし、その後、私はhtmlエンティティをデコードする方法HTMLエンティティをデコードし、私は、フォームにデータを格納

var data = "un <a ui-sref="app.concept({id:1})">test link<\/a>"

<a ui-sref="app.concept({id:1})">test link<\/a>

を意味し、 -sref? これを使用すると、https://github.com/incuna/angular-bind-html-compileは機能しません。

それは、私は実際のエスケープHTML文字列としてそのデータを保存するために簡単に/より良いかもしれないと思うビュー

+0

なぜこのようなデータを保存しますか? –

+0

私のデータにこのアンカーが含まれています。 ui-srefの二重引用符をエスケープしようとすると、指示文のコンパイル結果は ''になります。たぶん私は何かが恋しいです。 – alfredopacino

答えて

0

<a ui-sref="app.concept({id:1})">test link<\/a>を印刷します。これははるかに少ない作業を必要とするでしょう。

ただし、できない場合は、コントローラに$ sceサービスを注入し、データ変数宣言の後にdata = $sce.trustAsHtml(data)を使用することができます。

これを実行した後、ビューで<div ng-bind-html="data"></div>を使用してください。あなたの問題を解決するはずです。

これが完全に機能しない場合は、unescapeというアンダースコアの関数を使用してデータ変数のエスケープを試みることができます。だからtrustAsHtml(_.unescape(data))あなたを助けることができます。

ルータUIのほか

あなたはルータ-UIを使用しているので、あなたの最善の策は、提案されているようthis answerにやるとちょうど可能であればhref="path/to/state1"を使用することが考えられます。

+0

文字列にui-sref指令があり、ng-bind-htmlはコンパイルされません。 – alfredopacino

+0

@alfredopacino私はちょうど私の答えを変更しました。私はあなたがこのルートを行っているならば、私が示唆したことをしたいだけで、ui-srefをまったく使用したくないと思うかもしれません。 –

+0

ええ、私はhrefソリューションを使用すると思います(私たちはそれが最良の選択肢ではないと知っていますが、引用符をエンコードするよりも優れています) – alfredopacino

関連する問題