programing

AngularJS: 새로운 브라우저 창을 열어 범위와 컨트롤러, 서비스를 유지

telecom 2023. 3. 6. 20:40
반응형

AngularJS: 새로운 브라우저 창을 열어 범위와 컨트롤러, 서비스를 유지

글씨를 앱.이에서는 JS를 통해 .$window.open에서는 모든 항목이$scope변수는 없어집니다.

사용하려고 했습니다.window.parent★★★★★★★★★ 새로운 브라우저 창에서 앱 , 사실 새로운 브라우저 창에서 모든 앱 서비스, 컨트롤러 또는 범위가 전혀 적용되지 않습니다. 새 브라우저 창을 열어도 새 창이 이전 창의 동일한 모서리 앱에 속하도록 하는 방법이 있습니까? 할 수 합니다.JS는 JS를 사용합니다.게가 ??

각도 애플리케이션은 일반적으로 ng-app 지시 또는 angular 호출을 통해 초기화된 창의 문서, 창 및 이벤트에 연결되기 때문에 새 창을 동일한 angular.js 애플리케이션에 속하도록 하는 [직접] 방법은 없습니다.부트스트랩.

그러나 팝업 윈도우에 사용할 새 각도 모듈과 애플리케이션을 만들 수 있습니다.적절한 javascript 파일을 포함하면 원래 애플리케이션과 동일한 기본 서비스와 컨트롤러를 사용할 수 있습니다.

팝업창에 원래 어플리케이션의 데이터가 필요하다고 가정하면 window.open() 메서드에서 반환된 window 객체를 사용하여 전달할 수 있습니다.예를 들어 첫 번째 각도 응용 프로그램에서 다음과 같이 팝업 창을 엽니다.

angular.module('originalModule').service('popupService', function(someOtherDataService) {

  var popupWindow = window.open('popupWindow.html');
  popupWindow.mySharedData = someOtherDataService.importantData;

});

보조 "팝업" 각도 애플리케이션이 초기화되면 window.mySharedData를 읽어 공유 데이터를 참조할 수 있습니다.

다른 창에서 호출할 수 있는 함수를 각 창에 만들 수도 있습니다.팝업창은 window.opener 속성을 사용하여 원래 창으로 다시 호출할 수 있습니다.(parent.parent는 프레임의 부모 창을 가리킵니다.window.parent가 필요합니다)

[동의합니다. 각도 소스 코드를 연구하면 두 창에서 동일한 각도 앱을 사용할 수 있는 현명한 방법을 찾을 수 있을 것입니다.그런 시도는 오늘 밤 내 야망을 넘어섰어.]

메인창에 의해 열려 있는 창은 구조적으로 부모에게 동일한 루트스코프를 공유할 수 없습니다.각도 스코프는 DOM 요소별로 정의되어 있기 때문입니다.하위 창에서 완전히 새로운 AngularJs 앱을 부트스트랩해야 합니다.

다른 AngularJs 응용 프로그램을 호스트하는 새 창(자녀)이 메인 창(상위 창)에 의해 생성된 경우 부모 창에서 새로 생성된 창의 루트 범위를 참조한 후 부모 창에서 이벤트를 전달하는 방법을 사용할 수 있습니다.다음과 같은 경우:

자창:

$rootScope.$on("INTER_WINDOW_DATA_TRANSFER", function (data, args) {                   
            console.log("DATA RECEIVED: " + args.someData);
        });

부모 창에서 ng-app 속성이 정의되어 있는 DOM 요소(자녀 창)(루트 범위)(의사 코드)를 잡습니다.

var newWindowRef = $window.open("", "New Window", "width=1280,height=890,resizable=1");
var newWindowRootScope = newWindowRef.angular.element("#MY_ROOT_APP_ELEMENT_ID").scope();
newWindowRootScope.$broadcast("INTER_WINDOW_DATA_TRANSFER", {someData : "I'm data"});

window 객체를 사용하여 데이터를 전달할 수 있습니다.

구문:

$window.open('<linkname>').<variableName> = "your data";

예:

$window.open('<linkname>').var1 = "value1";

(주의:- 이 링크는 새로운 링크를 열고 변수 데이터를 설정합니다)새로운 페이지 컨트롤러에서는 변수를 액세스하려면oldata = window.var1;

언급URL : https://stackoverflow.com/questions/21519113/angularjs-open-a-new-browser-window-yet-still-retain-scope-and-controller-and

반응형