Ich bin mit einem Problem fest. Ich habe einen Controller "searchCtrl", es müssen einige Scope-Objekte in Direktiven verwendet werden.Wie teile ich einen Controller in mehreren Direktiven?
Wenn es eine Richtlinie ist, kann es als Controller verwendet werden: "searchCtrl". Aber mehrere Komponenten müssen searchCtrl verwenden, das von der dritten Partei bereitgestellt wird (das Ändern der Strg ist nicht vorzuziehen).
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;
}
Mein seachCtrl sieht aus wie
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();
so 2-Komponenten-Profile und Kontakte und eine gemeinsame Steuerung. Gemäß meiner Funktionalität wird "searchCtrl" zweimal ausgeführt und erhält die Antwort zweimal, da ich in zwei Direktiven statt dessen gesetzt habe, wenn der verwendete ng-Controller in Direktiven-HTML-Dateien genauso funktioniert.
Ohne wie oben, wie kann ich {{profile}} und {{contacts}} in verschiedenen Direktiven verwenden.
Irgendwelche schlagen vor, es in betterway zu tun.
'searchCtrl' sollte stattdessen ein Dienst sein, da sie freigegeben sind. Controller werden instanziiert, wenn sie angefordert werden. Haben Sie die Kontrolle über die 'searchCtrl'? – mrahhal
Ich bin verwirrt, wenn du die Kontrolle hast, dann hast du die Wahl, oder? Wenn Sie wirklich wollen, dass 'searchCtrl' freigegeben wird, sollten Sie es stattdessen zu einem Dienst machen. – mrahhal
Oh Entschuldigung. Ich bin nicht in der Kontrolle der SearchCtrl. – user2587222