我正试图找出从控制器外部调用AngularJS控制器内部函数的最佳方法。
我们正在使用Python后端,它通过JavaScript函数将数据发送回前端。我现在正在使用它将数据发送到Angular控制器......
function myFunction(var1, var2) {
angular.element($('body')).scope().insideFunction(var1, var2);
}
这非常有效,但我只是想知道这是否是最好的方法。
编辑:我已经推出了这个,并且大约有8个"在范围之外"功能正常。数据只是从Python>传递而来。 JS功能>角度函数。
如果有人有更好的方法,我很乐意听到它。
答案 0 :(得分:1)
答案 1 :(得分:0)
使用'controller as'语法:
html:
<div ng-app="demo" ng-controller="MainController as main">
<button ng-click="main.insideFunction()"></button>
</div>
js:
function MainController() {}
MainController.prototype.insideFunction = function() {};
angular.module('demo', [])
.controller('MainController', MainController);
MainController.prototype.insideFunction(var1, var2);
答案 2 :(得分:0)
而不是直接调用另一个控制器内的控制器。您可以通过全局$ rootScope对象
公开第一个控制器中的数据您可以在$ rootScope全局对象上定义变量 让它可以在任何控制器内访问。
<body>
<div ng-controller="ctrl1">
{{name}}
</div>
<div ng-controller="ctrl2">
{{name}}
</div>
</body>
var app = angular.module('plunker', []);
app.controller('ctrl1', function($rootScope, $scope) {
$rootScope.name = "jACK";
});
app.controller('ctrl2', function($rootScope, $scope) {
});