当前位置: 首页 > 面试题库 >

ng-click在编译后不起作用ng-bind-html

祁乐邦
2023-03-14
问题内容

我有指令

app.directive("dir", function($compile, $sce){
      return{
        restrict: "E",
        link: function(scope, element, attr){
          scope.$watch('content',function(){
            var html = $sce.trustAsHtml(attr.content);
            scope.alabala = $compile(html)(scope);
          },true);
        },
        template: "<div ng-bind-html='alabala'></div>",
      }
    });

控制器:

function MainController($scope, $http, customService, $location, $sce, $compile){
    $scope.init = function(){
        customService.get().success(function(data) {
                 var html = $sce.trustAsHtml(data);
                $("#dir").attr("content", data);

            });
    };
}

在索引页面上,我有:

<div id="div" ng-controller="MainController" class="pull-right span3" ng-init="init()">
      <dir id="dir" ></dir>
</div>

每当包含不同的html时,我的自定义服务都会返回

<button ng-click='click()'>Click me</button>

我想做的是每次在指令的内容中推送不同的值以对其进行编译并将其放入html并处理控制器中的click函数时。因为我是AngularJS的新手,所以一段时间以来一直在努力解决这个问题。请帮忙。


问题答案:

您不需要处理$ sce即可达到目的。

您可以将HTMLas字符串传递给指令。在指令中编译后,它将起作用。

HTML您需要的地方directive

<dir id="dir" content="myVal"></dir>

myVal控制器中设置其他值

$scope.myVal = '<button ng-click=\'buttonClick()\'>I\'m button</button>'; // HTML as string

directive

myApp.directive('dir', function($compile, $parse) {
    return {
      restrict: 'E',
      link: function(scope, element, attr) {
        scope.$watch(attr.content, function() {
          element.html($parse(attr.content)(scope));
          $compile(element.contents())(scope);
        }, true);
      }
    }
  })

检查 [**Demo**](http://plnkr.co/edit/v02xk1o3ORKaptzo40pj?p=preview)



 类似资料:
  • 问题内容: 我有一些要从json文件加载的html数据。 我通过在应用程序中使用ngSanitize并使用ng-bind-html来显示此html数据。 现在我想从标准转换json blob中的任何链接 至: 。 所以我在json文件上做了一些regExp来转换链接,但是出于某种原因,但是ng-bind-html过滤掉了ng- click的输出,我不知道为什么。是否应该这样做,如果可以,可以禁用此

  • 我在div上使用了,它可以正常工作,但是当我在其他输入上使用时,div上的停止工作。 工作代码[单击时调用附加项(项目)] 破损的代码[addItem(项目)未被调用] 相关JS代码 这里是http://plnkr.co/edit/eI5dvczO2E1Cp1SBPgQx?p=preview点击输入将带来下拉。在一种情况下,单击下拉菜单会将项目添加到选定列表中,但在其他情况下不会。 我已经试过调试

  • 问题内容: 我有以下代码的视图: 目标是无需使用href即可过渡到新状态。不幸的是,上面的代码不会触发。 我还尝试为此视图在控制器中包括$ state: 但是仍然没有。transictionTo也似乎不起作用。 有人对如何进行这项工作有任何想法吗? 编辑:我只能通过分配使其工作: 在我的控制器内。这看起来很丑。如果没有将$ state分配给作用域,是否真的没有其他方法可以访问$ state? 问题

  • 问题内容: 我有一个像这样的控制器: 当我尝试使用ng-click调用upload_variant_image函数时,它仅在绑定到静态DOM时才有效(当DOM加载时),我有这样的链接: 但是此元素是在DOM加载后动态添加的,因此ng-click不起作用。 但是当我在Rails中像这样更新DOM时,它不起作用: 问题答案: 我警告您,如果您通过Angular外部方法来操纵DOM,则可能不会完全接受A

  • 问题内容: 这里有角的菜鸟。我正在创建一个指令以递归显示问题树和子问题树。我正在模板中使用链接,该链接在范围内调用函数。由于某种原因,它不会调用该方法。 这是代码和小提琴http://jsfiddle.net/madhums/n9KNv/ HTML: Javascript: 任何帮助理解这一点将不胜感激。 问题答案: 您遇到范围问题。由于您在指令中使用隔离范围,因此它不再有权访问具有的控制器范围。

  • 问题内容: HTML jQuery 角度脚本 在这里,AngularJS的控制器部分中调用的函数不会从ng-click事件中触发。HTML已成功添加,但是ng- click无效。告诉我解决方案以使其正常工作 问题答案: 仍然不是一个完美的解决方案!!!-只是为了说明如何进行动态编译 不要将控制器用于dom操作-必须在指令的帮助下完成