在我的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并调用该函数。
答案 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');
});
}