W aplikacji AngularJS (główna) mam iframe
, wewnątrz której znajduje się również inna aplikacja AngularJS (iframe) również pod moją kontrolą. Chciałbym udostępnić dane między dwiema usługami, jedną w głównej aplikacji i jedną w aplikacji iframe. Oboje muszą czytać i pisać do tego samego obiektu.Dostęp do usługi AngularJS z usługi wewnątrz innej ramki
// main
// ... routes ...
views: { main: {
controller: function ($scope, serviceA) {
$scope.serviceA = serviceA;
},
templateUrl: 'iframe.html'
}
// ...
function ServiceA() {
this.sharedData; // exposed to controllers in main app
}
// ...
// iframe
// ...
function ServiceB() {
this.sharedData; // exposed to controllers in iframe app
}
// ...
Kiedy wewnątrz kontrolera w aplikacji iframe udało mi się odwoływać serviceA.sharedData
takiego:
var self = this;
var parentScope = $window.parent.angular.element($window.frameElement).scope();
parentScope.$watch('serviceA.sharedData', function (newValue, oldValue) {
self.sharedData = newValue;
}
Można to osiągnąć iw jaki sposób?
Czytałem następujące, ale nie mógł przekształcić go w roztworze jeszcze:
odpowiedź na drugie pytanie ty odwołanie twierdzi, że można uzyskać dostęp do kątową obiektu iframe z 'theIFrameElement .contentWindow.angular'. Czy to Ci pasuje? – user1950929
Tak, możliwe jest uzyskanie dostępu do obiektu 'kątowego' w ten sposób. Ale w jaki sposób mogę uzyskać dostęp do zarejestrowanej usługi? – hielsnoppe
możesz dodać usługę do swojego zakresu w kontrolerze, a następnie uzyskać do niej dostęp z zewnątrz (tj. Ramkę nadrzędną). – user1950929