問題が残っています。私はコントローラ "searchCtrl"を持っています、それはいくつかのスコープオブジェクトがディレクティブで使用する必要があります。コントローラを複数のディレクティブで共有する方法は?
コントローラの1つのディレクティブであれば、コントローラ: "searchCtrl"として使用できます。しかし、複数のコンポーネントがthridパーティーによって提供されるsearchCtrlを使用する必要があります(ctrlの変更は好ましくありません)。
file 1;
angular.module('app.core')
.directive('profilePage', DirectiveFunction1);
function DirectiveFunction1 (config,service) {
var directive = {
restrict: 'E',
templateUrl: 'components/search1.html',
controller: 'searchCtrl',
link:function (scope, element, attrs) {}
}
return directive;
}
file 2;
angular.module('app.core')
.directive('contactPage', DirectiveFunction2);
function DirectiveFunction2 (config,service) {
var directive = {
restrict: 'E',
templateUrl: 'components/search2.html',
controller: 'searchCtrl',
link:function (scope, element, attrs) {}
}
return directive;
}
私seachCtrlは
angular.module('asApp').controller('searchCtrl', ['$scope', 'service', function($scope, AppService, qVarService) {
axisAPI.object()
.app(service.app())
.qId('abcd')
.on('create',function(object) {
object.paint();
}).on('paint',function(data){
$scope.$apply(function(){
$scope.profile = data.profile;
$scope.contacts = data.profile;
})
}).create();
ので、2つの成分のプロファイルとの接点と共通のコントローラのように見えます。私の機能として、 "searchCtrl"は2回実行されており、2つの指示文には2つの指示文が置かれているので、 の代わりに使用されます。
上記のように指定しないと、{{profile}}と{{contacts}}を別のディレクティブで使用できます。
いずれにしても、それはもっと良い方法でそれをすることを提案します。
'searchCtrl'は共有されているのでサービスでなければなりません。コントローラは、要求されるたびにインスタンス化されます。あなたは 'searchCtrl'を制御していますか? – mrahhal
私は混乱しています、あなたがそれをコントロールしているなら、あなたは正しい選択をしていますか?あなたが本当に 'searchCtrl'を共有したいのであれば、代わりにそれをサービスにするべきです。 – mrahhal
申し訳ありません。私はsearchCtrlのコントロールにいません。 – user2587222