【问题标题】:ng-click is not working in kendo editorng-click 在剑道编辑器中不起作用
【发布时间】:2016-02-26 04:44:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不知道如何在 plunkr 中创建它。这只是一个直接的场景,rt?如果您需要更多说明,请告诉我。
  • 函数正在被调用,对吗?
  • 分享你的控制器,我来帮你
  • 是的。 ng-click 根本没有触发。为了测试,我添加了一个 alert()。如果我们将其更改为简单的 onclick(),这将起作用。
  • 我恐怕无法在这里发布整个控制器代码。 :(

标签: angularjs kendo-ui kendo-editor


【解决方案1】:

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; 的内容将解决您的问题。

【讨论】:

  • 它不仅与控制器有关,即使我尝试了一个简单的 alert(),它也不起作用。该事件未触发。如果我们改成javascript的onclick,就会弹出alert()。
  • 使用弹出窗口将 HTML 标记插入到编辑器内容中。插入编辑器文本区域后,我们如何确保 ng-click 事件在范围内?称为“TestMsg()”的方法已添加到控制器中。我们是否需要编译或将更新后的 html 的 ng-click 带入范围?我什至尝试过$compile(customHtml)($scope);,但没有成功!
  • 编译终于成功了。但是方法调用不正确。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多