2016-12-12 92 views
0

運行在2個分離控制器的功能我有2個單獨的angularjs控制器如何我可以在angularjs

名爲HomeController的而且SearchController

我有一個名爲「搜索()」中的HomeController

功能我怎麼能從searchController運行搜索功能?

回答

1

在工廠中定義'搜索'功能,將該工廠注入到兩個控制器中,然後您可以從兩個控制器訪問'搜索'功能。

樣品:

app.controller('HomeController', function(searchFactory){ 
    //calling factory function 
    //searchFactory.search(); 

}); 

app.controller('searchController ', function(searchFactory){ 

    //calling factory function 
    //searchFactory.search(); 

}); 

app.factory('searchFacotry', function(){ 
    return{ 
    search: function(arg){ 
     alert('hello world'); 
    }; 
    }; 
}); 
1

我有此Plunker它執行以上。 app.js文件看起來像這樣。它使用工廠聲明。或者,如果你只是想要這個函數來存儲和返回一些數據,那麼你可以使用角度的$ rootScope服務,它可以全局訪問。服務在執行某些操作時是首選。看看這個Link有答案解釋使用服務與rootScope。

app.controller('HomeCtrl', function($scope, searchService) { 
$scope.ctrl1Fun= function() { 
    searchService.search(); 
} 
}); 

app.controller('SearchCtrl', function($scope, searchService) { 
     $scope.ctrl2Fun= function() { 
     searchService.search(); 
     } 
}) 

app.factory('searchService', function(){ 
    function search(){ 
    alert('hello World') 
    } 
    var service = {search : search} 
    return service 
}); 
+0

我想運行函數是在HomeController的 –

+0

如果您需要重用控制器裏面寫一個函數,你應該採取的功能出來,並使其可通過服務或通過共享範圍或rootscope分享。這是標準做法,它使您的代碼可重複使用,而且冗餘更少。 – Gaurav