В приложении AngularJS (main) у меня есть iframe
, внутри которого также находится другое приложение AngularJS (iframe). Я хотел бы поделиться данными между двумя службами, один в основном приложении и один в приложении iframe. Оба они должны читать и писать на один и тот же объект.
// 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
}
// ...
Когда внутри контроллера в приложении iframe мне удалось ссылаться на serviceA.sharedData
следующим образом:
var self = this;
var parentScope = $window.parent.angular.element($window.frameElement).scope();
parentScope.$watch('serviceA.sharedData', function (newValue, oldValue) {
self.sharedData = newValue;
}
Можно ли это сделать и как?
Я прочитал следующее, но не смог превратить его в решение, но: