2013-09-28 27 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

相关问题