2013-09-28 34 views
1

在ControllerOne我怎樣才能調用一個函數,是在另一個CONTROLER(角JS)

$scope.displayReport = function(status){ 

    statusCkeck(status) ; 
} 

statusCkeck() ;是在另一個控制器-controllerTwo

如何可以調用此函數從一個控制器到另一個

我試過angular.element(document.getElementById('controllerTwo')).scope().statusCheck();

但它拋出錯誤。

請建議

+0

但是我的情況是不同的,我只是想調用另一個函數,沒有售後服務電話 – Prashobh

+2

請不要這樣做...... –

+1

也就是說沒有棱角的方式。如果您想在控制器之間共享內容,請使用服務。 –

回答

6

您應該使用服務來避免使用調用其他控制器中的函數的代碼混淆控制器。如果您正在共享功能,只需在服務中定義它們並在需要的地方注入該服務即可。

angular.module('myApp', []) 
    .factory('myService', function() { 
    return { 
     sharedFunction: function (foo, bar) { 
     return foo + bar; 
     } 
    } 
}; 
+0

謝謝,我們可以通過使一個函數通用來做到這一點,總是最好的方法是你提出的.http://angulartutorial.blogspot.in/2014/03 /communicate-with-controllers-in-angular.html – Prashobh

1

你可以得到範圍:

angular.element(document.getElementById('yourControllerElementID')).scope().get() 

yourControllerElementID應該ElementID沒有ControlerName!

例如:

<div id="elemID" ng-controller="YourController"></div> 

所以elemId與YourController元素的ID。

+0

這裏我很困惑,控制器中的元素ID是什麼 – Prashobh

+0

請參閱編輯。只要在使用控制器的地方使用Id的元素即可。 –

+0

這應該工作,但這是一個可怕的想法。像這樣緊密耦合你的控制器導致意大利麪代碼。 – Jason

相關問題