2017-02-13 3 views
2

私のページにhtmlファイルの内容を追加しています。ユーザーがコンテンツを追加するときに変更する必要がある「プレビュー」として機能する。引数のために、AngularJSでは、角度テンプレートデータも含むHTMLブロックを追加できますか?

<div> 
    {{introText}} 
</div> 

は、私は、ページ上のhtmlを挿入するために、コンテンツと$sce.trustAsHtml()をつかむために$http.get()を使用しています。問題は{{introText}}がコントローラにバインドされていないため認識されません。

私はng-model="introText"と入力してください。{{introText}}を更新したいと思います。

注:私のhtmlファイルははるかに長いですが、提供されるhtmlは単なる例です。

+0

あなたは、関連するコントローラのコードを投稿することができますか? – dtkaias

+0

あなたは$ compileや$ interpolateが必要な詳細に応じて –

答えて

1

$interpolateを使用してみてください:

(function(angular) { 
 
    'use strict'; 
 
angular.module('bindHtmlExample', ['ngSanitize']) 
 
    .controller('ExampleController', ['$scope', '$interpolate', function($scope, $interpolate) { 
 
    $scope.introText = 'some text'; 
 
    var templates = ['<div>{{introText}}</div>', '<h1>{{introText}}</h1>']  
 
    var i = 0; 
 
    $scope.inter = $interpolate(templates[i]); 
 
    $scope.template = function(){  
 
     i = 1 - i; 
 
     $scope.inter = $interpolate(templates[i]); 
 
    }; 
 
    }]); 
 
})(window.angular);
<script src="//code.angularjs.org/snapshot/angular.min.js"></script> 
 
<script src="//code.angularjs.org/snapshot/angular-sanitize.js"></script> 
 

 
<body ng-app="bindHtmlExample"> 
 
    <div ng-controller="ExampleController"> 
 
    <input type='text' ng-model='introText'/>  
 
    <input type='button' value='Change template' ng-click='template()'>  
 
    <p ng-bind-html="inter({introText})"></p>  
 
</div> 
 
</body>

+0

'ng-model'の入力を動的に追加することができますか?なぜこのアプローチが私のために働いていないのかを説明するかもしれません。 – dcp3450

+0

あなたのコードを投稿するまで私は答えることができません。 –

関連する問題