0

私はこのようなリピーターのセットアップを持っています

<table class="table table-condensed">
    <tr ng-repeat="m in resp.AvailableTemplates">
        <td>
            <input type="checkbox" ng-model="m.Selected" />
            <span ng-bind-html="m.MessageText"></span>
        </td>
    </tr>
</table>

m.MessageText は、次のような文字列です。

Hello <input type='text' value=''/>!, thanks for the <input type='text' value=''/>

ユーザーは、テンプレート フレーズのリストを表示し、目的のフレーズにチェックを入れ、テキスト領域に入力し、提供されたフレーズが入力された電子メールを送信する送信を行います。

ng-bind-html を使用すると、出力は正常に表示されます。しかし、ng-model を使用すると、出力に html が表示されません。この情報をバインドして、適切な html としてレンダリングするだけでなく、ユーザーから提供された情報を収集できるようにするにはどうすればよいですか?

4

2 に答える 2

0

提供されたhtmlが必要だと思います

Hello <input type='text' value=''/>!, thanks for the <input type='text' value=''/>

次のような角度モデルにバインドされます

Hello <input type='text' value='' ng-model="m.messageContentOne"/>!, thanks for the <input type='text' value='' ng-model="m.messageContentTwo"/>

ただし、ng-bind-html を使用して角度バインディングを含む HTML をレンダリングすることはできません (できますが、バインディングは機能しません)。

これを機能させるには、HTML をバインドしてコンパイルし、Angular バインディングを機能させる必要があります。

これを行うには、このリンクからカスタム ディレクティブ bind-html-compile を使用できます https://github.com/incuna/angular-bind-html-compile

自分で行うこともできます。ディレクティブ要素を angular $compile サービスでコンパイルするディレクティブを作成するだけです。

 $compile(element.contents())(scope);

それが役に立てば幸い。

于 2016-12-19T17:56:31.133 に答える