Call angularjs function using jquery/javascript
Solution provide in the questions which you linked is correct. Problem with your implementation is that You have not specified the ID of element correctly.
Secondly you need to use load
event to execute your code. Currently DOM is not loaded hence element is not found thus you are getting error.
HTML
<div id="YourElementId" ng-app='MyModule' ng-controller="MyController">
Hi
</div>
JS Code
angular.module('MyModule', [])
.controller('MyController', function ($scope) {
$scope.myfunction = function (data) {
alert("---" + data);
};
});
window.onload = function () {
angular.element(document.getElementById('YourElementId')).scope().myfunction('test');
}
DEMO
You can use following:
angular.element(domElement).scope()
to get the current scope for the element
angular.element(domElement).injector()
to get the current app injector
angular.element(domElement).controller()
to get a hold of the ng-controller instance.
Hope that might help
Another way is to create functions in global scope. This was necessary for me since it wasn't possible in Angular 1.5 to reach a component's scope.
Example:
angular.module("app", []).component("component", {
controller: ["$window", function($window) {
var self = this;
self.logg = function() {
console.log("logging!");
};
$window.angularControllerLogg = self.logg;
}
});
window.angularControllerLogg();