2016-02-26 120 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

相關問題