使用jquery / javascript调用angularjs函数
我正在尝试使用JavaScript / jQuery调用angular函数,以下是我find的链接
- 用Jquery调用Angular函数
- 从控制器组件外部呼叫控制器function
我采取了相同的步骤,但在浏览器控制台中出现错误
Uncaught TypeError: Cannot call method 'myfunction' of undefined 我创造了小提琴 。 如何调用myfunction函数并显示警报? 任何想法?
解决scheme中提供您所链接的问题是正确的。 你的实现问题是你没有正确指定元素的ID 。
 其次,你需要使用load事件来执行你的代码。 目前DOM不加载,因此元素没有find,因此你得到错误。 
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); }; }); window.onload = function () { angular.element(document.getElementById('YourElementId')).scope().myfunction('test'); } 
DEMO
您可以使用以下内容:
  angular.element(domElement).scope()获取元素的当前作用域 
  angular.element(domElement).injector()获取当前的应用程序注入器 
  angular.element(domElement).controller()获取ng控制器实例的持有者。 
希望这可能有帮助
另一种方法是在全球范围内创buildfunction。 这对我来说是必要的,因为在Angular 1.5中不可能达到组件的范围。
例:
 angular.module("app", []).component("component", { controller: ["$window", function($window) { var self = this; self.logg = function() { console.log("logging!"); }; $window.angularControllerLogg = self.logg; } }); window.angularControllerLogg(); 
你的抢劫者正在射击
 angular.element(document.getElementById('MyController')).scope().myfunction('test'); 
在呈现任何东西之前。
您可以validation,通过在超时中包装它
 setTimeout(function() { angular.element(document.getElementById('MyController')).scope().myfunction('test'); }, 1000); 
你还需要在你的div上添加一个ID。
 <div ng-app='MyModule' ng-controller="MyController" id="MyController">