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
'programing' 카테고리의 다른 글
React-Redux - 주요 "코인"에 대한 환원제는 제공되지 않습니다. (0) | 2023.03.06 |
---|---|
int 목록용 JSON (0) | 2023.03.06 |
HTML/Javascript: src가 설정된 스크립트 태그에 로드된 JSON 데이터에 액세스하는 방법 (0) | 2023.03.06 |
오류: useHref()는 컴포넌트의 컨텍스트에서만 사용할 수 있습니다. URL을 localhost:3000/experience로 직접 입력하면 동작합니다. (0) | 2023.03.06 |
WooCommerce - product_id별로 제품 설명을 가져옵니다. (0) | 2023.03.06 |