運行在2個分離控制器的功能我有2個單獨的angularjs控制器如何我可以在angularjs
名爲HomeController的而且SearchController
我有一個名爲「搜索()」中的HomeController
功能我怎麼能從searchController運行搜索功能?
運行在2個分離控制器的功能我有2個單獨的angularjs控制器如何我可以在angularjs
名爲HomeController的而且SearchController
我有一個名爲「搜索()」中的HomeController
功能我怎麼能從searchController運行搜索功能?
在工廠中定義'搜索'功能,將該工廠注入到兩個控制器中,然後您可以從兩個控制器訪問'搜索'功能。
樣品:
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');
};
};
});
我有此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
});
我想運行函數是在HomeController的 –
如果您需要重用控制器裏面寫一個函數,你應該採取的功能出來,並使其可通過服務或通過共享範圍或rootscope分享。這是標準做法,它使您的代碼可重複使用,而且冗餘更少。 – Gaurav