我从我的数据库中得到一个HTML-String,我想通过 ng-bind-html将它插入到我的AngularJs应用程序中.我是这样做的:

Html:

<div ng-bind-html="myBindHtml"></div>

JavaScript:如下所示:

$scope.myBindHtml = $sce.trustAsHtml(htmlStringToInsert);

我的HTML(我想要插入的)如下所示:

<button ng-click="testClickEvent()">TestButton</button>

插入物工作正常.

现在,我编写了一个按钮应该调用的函数(TestClickEvent).这只是将一个字符串输出到控制台.

但这一部分不起作用.我想从我插入的HTML到这个函数没有绑定.有什么方法可以调用我的函数吗?

推荐答案

只有在Angular 上下文中运行Angular 代码时,它才会执行.当您使用ng-bind-htmlITS在Angular 上下文/作用域之外生成时,因此像ng-click这样的Angular 事件不起作用,您需要依赖像onclick这样的纯JS事件,因此避免这些场景,由于解决方案的复杂性,直接在Angular 上对它们进行编码!

当需要Angular 事件时,我们可以避免ng-bind-html,并且我们需要在前端直接编码它们,而不是从数据库或其他方法中输入

var app = angular.module('myApp', []);
app.controller('myCtrl', function ($sce, $scope) {
    $scope.items = [];
    for (var i = 1; i <= 2; i++) {
        $scope.items.push({
            description: $sce.trustAsHtml('<h2 onclick="console.log(\'hello\')">with onclick item ' + i + '</h2>')
        });
    };
    $scope.items2 = [];
    for (var i = 1; i <= 2; i++) {
        $scope.items.push({
            description: $sce.trustAsHtml('<h2 ng-click="console.log(\'hello\')"> with ng-click item ' + i + '</h2>')
        });
    };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.8.3/angular.min.js" integrity="sha512-KZmyTq3PLx9EZl0RHShHQuXtrvdJ+m35tuOiwlcZfs/rE7NZv29ygNA8SFCkMXTnYZQK2OX0Gm2qKGfvWEtRXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<div ng-app="myApp">
<div ng-controller="myCtrl">
  <div>
    <div ng-repeat="item in items" ng-bind-html="item.description"></div>
  </div>
  <hr />
  <div>
    <div ng-repeat="item in items2" ng-bind-html="item.description"></div>
  </div>
</div>
</div>

Javascript相关问答推荐

仅在React和JS中生成深色

获取表格的左滚动位置

如何避免移动设备中出现虚假调整大小事件?

窗口.getComputedStyle()在MutationObserver中不起作用

防止用户在selectizeInput中取消 Select 选项

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

Angular:动画不启动

VUE 3捕获错误并呈现另一个组件

我怎么在JS里连续加2个骰子的和呢?

如何修复我的数据表,以使stateSave正常工作?

为什么123[';toString';].long返回1?

如何使用JavaScript拆分带空格的单词

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

如何在JAVASCRIPT中临时删除eventListener?

如何 for each 输入动态设置输入变更值

在SHINY R中的嵌套模块中,不能使用Java代码

令牌JWT未过期

为什么延迟在我的laravel项目中不起作用?

select 2-删除js插入的项目将其保留为选项

为什么我的SoupRequest";被重置为初始值,以及如何修复它?