0

我正在尝试在剑道编辑器中插入带有 ng-click 事件的 html 标记。当我获得插入的数据并在 div 中显示时,ng-click 不起作用。javascript 中的正常 onclick 工作正常,但 ng-click 不是。

下面给出的是<a>插入到编辑器文本区域的标签。

<a ng-click="testMsg()"><span>' + nodeId + '</span></a>

关于如何解决这个问题的任何想法?

4

2 回答 2

0

onclick是 DOM 本机事件处理程序,但ng-click不是。只有那些在作用域中注册的函数才可用。ng-click如我的示例所示,如果没有明确分配范围,任何内置函数都将不可用。

var app = angular.module('app1', []);
app.controller('ctrl1', ['$scope', function($scope) {
  function testMsg() {
    alert('Hello world');
  }
  
  $scope.goodTestMsg = testMsg;
}]);
<div ng-app="app1" ng-controller="ctrl1">
  <p ng-click="goodTestMsg()">Click me will show a message</p>
  <p ng-click="testMsg()">Click me should happen nothing</p>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

TL;DR:该方法testMsg不暴露给控制器范围。尝试添加类似的$scope.testMsg = testMsg;内容将解决您的问题。

于 2016-02-26T05:22:14.580 回答
0

尝试使用 div 而不是 textarea。我面临着类似的问题,该问题已通过 div 部分解决。但是它将是内联编辑,因为工具栏将被隐藏,并且仅当您将光标放在 div 上时才会显示。

于 2016-04-07T10:26:06.450 回答