如何从控制器动态添加AngularJs指令?

时间:2016-10-07 14:35:02

标签: angularjs

我想从控制器添加一个AngularJs指令。

控制器代码:

UIAlertController

HTML:

    $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");
            };

此代码工作正常,但问题是添加的ng-click不起作用。

1 个答案:

答案 0 :(得分:0)

当角度具有内置指令(如ng-ifng-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

这里也可以使用一个简单的指令