0

に2つの分割のコントローラ内の関数を実行することができますどのように私は持っているにHomeControllerとSearchControllerの名前2つの別々のangularjsコントローラ私はangularjs

私は

にHomeController

に「)(検索」という名前の関数を持っていますsearchControllerから検索機能を実行するにはどうしたらいいですか?

答えて

1

ファクトリで「検索」機能を定義し、両方のコントローラにそのファクトリを挿入すると、両方のコントローラから「検索」機能にアクセスできます。

サンプル:私は上記の処理を行い、このPlunkerをした

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

。 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

私はあなたが、コントローラ内部で書かれた機能を再利用する必要がある場合は、その関数を取り出し、サービスを通じて、それを利用できるようにするか、共有範囲またはrootscopeを通してそれを共有しなければならないにHomeController –

+0

にある関数を実行したいです。これが標準的な方法です。コードを再利用可能で冗長性の少ないものにします。 – Gaurav

関連する問題