Angularjs:从另一个控制器中的控制器调用方法

时间:2016-02-26 21:39:34

标签: javascript angularjs

我有两个控制器 - controller1和controller2。

app.controller('Controller1', function($scope) {

$scope.setItems=function()
{
    var itemName='Lemon';
}

});

app.controller('Controller2', function($scope) {
     //This controller i want da get 'itemName' from 'controller1'
});

如何从controller2获取数据到controller1。 我很抱歉我的例子很简单,但我想弄清楚

3 个答案:

答案 0 :(得分:2)

https://docs.angularjs.org/guide/services

控制器通常不应该知道除了它们自己正在操纵的对象之外的任何东西。服务允许您的应用程序在控制器之间传递对象,因为服务在应用程序中持续存在,其中控制器被重复销毁和重新启动。

app.controller('Controller1', ['ItemService1',function($scope, itemService) {

$scope.setItems=function()
{
    var itemName='Lemon';
   itemService.AddItem(itemName);
}

}]);

app.controller('Controller2', ['ItemService1', function($scope, itemService) {
     //This controller i want da get 'itemName' from 'controller1'
var lemons = itemService.getLemons();
}]);

答案 1 :(得分:0)

它是一个糟糕的设计,在一个控制器和访问另一个控制器中的变量或方法。您可以使用服务来完成这项工作。将数据分配给服务,以便可以由应用程序中的多个控制器/服务共享/访问。

答案 2 :(得分:0)

Angular controller无法与另一个controller共享状态,除非您以某种方式注入它。通常,对于共享控制器,最佳做法是按照这个确切的顺序使用factoryservice$rootScope