2016-10-07 3 views
0

コントローラからAngularJsディレクティブを追加したいとします。AngularJs指示文をコントローラから動的に追加する方法は?

コントローラコード:

$scope.getLink = function(fileInfo, index) 
       { 
        if(fileInfo !== null) 
        { 
        if(fileInfo.fileType.indexOf("image") !== -1) 
        { 
         return $sce.trustAsHtml('<span ng-click="getImage('+ index +', "' 
          + fileInfo.filePath +'")">view</span>'); 
        } 
        else 
        { 
         return $sce.trustAsHtml('<a target="_blank" href="/phoenix/subscriber/getfile' 
         + fileInfo.filePath+'">download</a>'); 
        } 
        } 
       }; 
$scope.getImage = function() 
      { 
       alert("Done"); 
      }; 

HTML:

<div ng-show="post.fileInfo !== null"> 
<div ng-bind-html="getLink(post.fileInfo,$index)"></div> 
        </div> 

このコードは正常に動作しますが、問題は、追加ngのクリックが動作しないということです。

+0

ng-clickはどこですか? – Thalaivar

+1

それが私だったら、htmlにばらつきを入れます。それはng-ifイメージ、show image html、ng-if not image、show linkです。 – cYrixmorten

+1

これもあなたのクリックの問題を解決します。コントローラから送られたhtmlがコンパイルされていないので、現時点では動作していないと思います。だから、ng-clickは何の意味も持たない(指示として扱われていないのでリンクされているなど) – cYrixmorten

答えて

0

あなたはすべての

<div ng-show="post.fileInfo !== null"> 
    <div> 
    <span ng-if="post.fileInfo.fileType.indexOf('image') !== -1" 
      ng-click="getImage($index,post.fileInfo.filePath)">view</span> 
    <a ng-if="post.fileInfo.fileType.indexOf('image') === -1" 
     target="_blank" 
     ng-href="/phoenix/subscriber/getfile/{{post.fileInfo.filePath}}">download</a> 

    </div> 
</div> 

でその機能を必要としないビューでこれを管理するためにng-ifまたはng-showなどに内蔵されディレクティブを持っている場合、角度ビューをこのように管理する必要はありませんあなたのアプローチがうまくいかなかった理由は、あなたが使用する必要がある指示文を挿入するときです。$compile

ここでも簡単な指示文を使用できます

+0

ありがとうございます。 – yousef

関連する問題