2016-10-07 6 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> 

Этот код работает нормально, но проблема в том, что добавили нг-клик не работает.

+0

где ng-click? – Thalaivar

+1

Если бы это был я, я бы поставил изменчивость в html. Это ng-if image, show image html, ng-if not image, show link. – cYrixmorten

+1

Также будет исправлена ​​проблема с кликом. Я полагаю, что он не работает в данный момент, потому что html, отправленный с контроллера, не скомпилирован. Таким образом, ng-click не имеет никакого значения (поскольку он не рассматривается как директива, связанный и т. Д.) – cYrixmorten

ответ

0

Там нет необходимости управлять мнение, таким образом, когда угловой имеет директивы, построенные в подобном ng-if или ng-show управлять этим в представлении

Вам не нужна эта функция на всех

<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> 

Причина, по которой ваш подход не работал, - это когда вы сами вставляете директивы. $compile

Здесь также может использоваться простая директива

+0

Спасибо, что работает. – yousef

Смежные вопросы