2016-02-26 90 views
0

我有两个控制器 - controller1和controller2。Angularjs:从另一个控制器中的控制器调用方法

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' 
}); 

如何将数据从控制器2获取到控制器1。 我很抱歉,我的例子很简单,但我想弄清楚它

+2

理想的这种情况,你应该创建服务/工厂两个控制器 –

+0

如果没有问题,请例如之间的数据共享! –

+0

好吧,控制器到控制器是不是有效的模式,对于你的问题,你可以使用,factorys,服务,rootcope,localstorage,$ swatch,$ .emit –

回答

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(); 
}]); 
0

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

0

角度controller不能与另一个controller共享状态,除非您以某种方式注入它。通常对于共享控制器状态,最佳实践是按此确切顺序使用factory,service$rootScope

相关问题