2015-07-19 42 views
2

我正試圖從控制器外部調出AngularJS控制器內部函數的最佳方式。如何在AngularJS控制器中調用一個函數?

我們正在使用一個Python後端,它通過JavaScript函數將數據發回到前端。我用這此刻的數據發送到控制器的角...

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

這個作品非常好,但我只是想知道這是否是做到這一點的最好辦法。

編輯:我已經滾了這個,並有約8這些「外部範圍」功能工作正常。數據只是從Python> JS函數> Angular函數傳遞。

如果有人有這樣做的更好的方法,我很樂意聽到它。

回答

1

它可能運作良好,但它不是最好的做法。

如果要在控制器之間進行通信,可以使用事件。更多詳情,請訪問:

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

+1

謝謝,但是我們沒有在控制器之間進行通信。我已經爲我的問題添加了更多信息。我們的python後端只能調用JS函數,因此我正在尋找將這些數據放入控制器的最佳方法。 – Andy92

0

使用 '控制器' 語法:

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); 
+0

謝謝你,但我不確定這是否可能與我的情況。我用更多的信息更新了我的問題。 – Andy92

0

而不是直接調用另一個controlller內的控制器。您可以通過全球$ rootScope對象暴露在你的第一個控制器中的數據,

您可以在$ rootScope全局對象上定義變量, 讓它成爲accessable任何控制器內。

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

    }); 
+0

我們沒有兩個控制器。我用更多的信息更新了最初的問題。謝謝你的幫助。 – Andy92

相關問題