我想在无法控制RTE元素的

时间:2019-03-20 07:14:48

标签: javascript angularjs aem rte

在我的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 :(得分:0)

就像the answer in the duplicate question我在评论中说过。您可以使用它来满足您的需求。像这样:

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');
    });
}