Solución:
La solución proporcionada en las preguntas que vinculó es correcta. El problema con su implementación es que no ha especificado el IDENTIFICACIÓN del elemento correctamente.
En segundo lugar necesitas usar load
evento para ejecutar su código. Actualmente DOM no está cargado, por lo tanto, el elemento no se encuentra, por lo que está obteniendo un error.
HTML
<div id="YourElementId" ng-app='MyModule' ng-controller="MyController">
Hi
</div>
Código JS
angular.module('MyModule', [])
.controller('MyController', function ($scope) {
$scope.myfunction = function (data) {
alert("---" + data);
};
});
window.onload = function () {
angular.element(document.getElementById('YourElementId')).scope().myfunction('test');
}
MANIFESTACIÓN
Puede utilizar lo siguiente:
angular.element(domElement).scope()
para obtener el alcance actual del elemento
angular.element(domElement).injector()
para obtener el inyector de aplicaciones actual
angular.element(domElement).controller()
para obtener una instancia de ng-controller.
Espero que pueda ayudar
Otra forma es crear funciones en el ámbito global. Esto era necesario para mí, ya que no era posible en Angular 1.5 alcanzar el alcance de un componente.
Ejemplo:
angular.module("app", []).component("component", {
controller: ["$window", function($window) {
var self = this;
self.logg = function() {
console.log("logging!");
};
$window.angularControllerLogg = self.logg;
}
});
window.angularControllerLogg();