如何调用AngularJS控制器内的函数?

时间:2015-07-19 18:25:13

标签: javascript angularjs

我正试图找出从控制器外部调用AngularJS控制器内部函数的最佳方法。

我们正在使用Python后端,它通过JavaScript函数将数据发送回前端。我现在正在使用它将数据发送到Angular控制器......

function myFunction(var1, var2) {
    angular.element($('body')).scope().insideFunction(var1, var2);
}

这非常有效,但我只是想知道这是否是最好的方法。

编辑:我已经推出了这个,并且大约有8个"在范围之外"功能正常。数据只是从Python>传递而来。 JS功能>角度函数。

如果有人有更好的方法,我很乐意听到它。

3 个答案:

答案 0 :(得分:1)

它可能运作良好,但这不是最佳方式。

如果要在控制器之间进行通信,可以使用事件。有关详细信息,请访问:

https://stackoverflow.com/a/14502755/4693496

答案 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) {

  });