Я хотел добавить ng-click в компонент RTE, для которого у меня нет контроля над элементом RTE - PullRequest
0 голосов
/ 20 марта 2019

В моем компоненте AEM есть элемент rte.вся разметка генерируется динамически, и я хотел добавить ng-click для вызова функции.Вот код для добавления RTE ${properties.text @context='html'} Это дает мне просто класс, который я использую в качестве селектора.Мой существующий код выглядит следующим образом:

var sdshopNowLink = angular.element('.sdshopNowLink');
sdshopNowLink.on('click', function(){
    $scope.submitshopeCatalog();
});

Сначала я использовал селекторы javascript, но это не работает в первый раз.Использование $ compile работает локально, но не после минимизации.

var sdshopNowLink = angular.element('.sdshopNowLink'); 
sdshopNowLink.attr("ng-click", "submitshopeCatalog()");
compile(sdshopNowLink);

function compile(element){
    var el = angular.element(element);    
    $scope = el.scope();
    $injector = el.injector();
    $injector.invoke(function($compile){
        $compile(el)($scope)
    });     
}

Кроме того, выше также есть некоторые проблемы с перфорированием.Есть ли другой способ добавить ng-click и вызвать функцию.

1 Ответ

0 голосов
/ 22 марта 2019

Как ответ в дублирующем вопросе Я изложил в комментариях. Вы можете использовать это для удовлетворения своих потребностей. Как это:

HTML

<div id="YourElementId" ng-app='MyModule' ng-controller="MyController">
    Hi
</div>

Код JS

angular.module('MyModule', [])
    .controller('MyController', function ($scope) {
    $scope.myfunction = function (data) {
        alert("---" + data);

        // Do something more...
    };
});

// I changed the code here so when element with ID "YourElementId" 
// gets clicked, it executes the anonymous function that calls "myFunction" 
// in the controller "MyController"
window.onload = function () {
    angular.element(document.getElementById('YourElementId')).on('click', function (event) {
        angular.element(event.target).scope().myfunction('test');
    });
}
...