ng-click не работает в редакторе кендо

Я пытаюсь вставить тег html с событием ng-click в редакторе кендо. Когда я получаю вставленные данные и показываю их в div, ng-click не работает. Обычный onclick в javascript работает нормально, а ng-click — нет.

Ниже приведен тег <a>, вставленный в текстовую область редактора.

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

Любая идея о том, как решить эту проблему?


person Anish V    schedule 26.02.2016    source источник
comment
Я не знаю, как создать это в plunkr. Это просто прямой сценарий, rt? Дайте мне знать, если вам нужны дополнительные разъяснения.   -  person Anish V    schedule 26.02.2016
comment
Функция вообще вызывается, правильно?   -  person Satej S    schedule 26.02.2016
comment
поделитесь своим контроллером, я вам помогу   -  person ojus kulkarni    schedule 26.02.2016
comment
Да. ng-click вообще не срабатывает. Для тестирования я добавил alert(). Это работает, если мы изменим его на простой onclick().   -  person Anish V    schedule 26.02.2016
comment
Боюсь, что не смог выложить сюда весь код контроллера. :(   -  person Anish V    schedule 26.02.2016


Ответы (2)


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;, и это решит вашу проблему.

person stanleyxu2005    schedule 26.02.2016
comment
Дело не только в контроллере, даже если бы я попробовал простой alert(), он не работал. Это событие не срабатывает. Если мы изменим onclick javascript, то появится предупреждение(). - person Anish V; 26.02.2016
comment
HTML-тег вставляется в содержимое редактора с помощью всплывающего окна. После вставки в текстовое поле редактора, как мы удостоверимся, что событие ng-click находится в области видимости? Метод под названием «TestMsg()» уже добавлен в контроллер. Нужно ли нам компилировать или что-то еще, чтобы обновить ng-click обновленного html в области видимости? Я даже пробовал $compile(customHtml)($scope);, но это не сработало! - person Anish V; 29.02.2016
comment
Наконец компиляция сработала успешно. Но метод вызывается неправильно. - person Anish V; 01.03.2016

Вместо textarea попробуйте использовать div. Я столкнулся с аналогичной проблемой, которая была частично решена с помощью div. Однако это будет встроенное редактирование, так как панель инструментов будет скрыта и будет отображаться только тогда, когда вы наведете курсор на div.

person Prasanna J    schedule 07.04.2016