저는 이것이 Angularjs 규칙에 위배된다는 것을 알고 있습니다.
먼저 현장 이야기를 해보자.
사용자가 페이지 A에서 "추가" 버튼을 클릭하면 window.open이 페이지 B를 엽니다. 페이지 B에 정보를 입력한 후 저장을 클릭하면 이를 페이지 A에 반영하려고 합니다. 그런 다음 A페이지의 일부 정보와 함께 컨트롤러에 제출하세요.
저는 Angularjs를 처음 접하기 때문에 여전히 페이지 B opener.document.getElementById를 사용하여 상위 페이지(페이지 A의 숨겨진 입력 값)를 설정합니다.
하지만 페이지의 입력 보기가 변경된 것으로 보이지만 실제 모델은 전혀 변경되지 않았으며 컨트롤러에서 얻은 값은 모두 정의되지 않았습니다.
조언을 구하고 싶습니다
1. 이렇게 작성했다면 컨트롤러가 숨겨진 B 페이지에서 반환된 입력값을 얻을 수 있도록 하려면 어떻게 해야 할까요?
2. Angularjs 작성방법을 따른다면 어떻게 바뀌어야 할까요?
A페이지 첨부:
으아아아A.js:
으아아아B페이지:
으아아아
입력을 수정한 다음 JQ를 사용하여 이벤트를 추가하기만 하면 됩니다
$("#cert_valid_from").val(date1).trigger('change');
주로 트리거 시뮬레이션이 변경 이벤트를 트리거합니다
참조 코드
A.js:
으아아아B페이지
으아아아이제 A.js에서 필요한 것이 무엇인지
$scope.abv
알릴 수 있습니다.그러나 이 접근 방식은 완전히 해결 방법이며 강력히 권장되지 않는다는 점에 유의해야 합니다
이유는 버튼 클릭이나 입력을 자동으로 도와주는 플러그인을 만들기 위해 크롬 플러그인을 사용하려고 하는데, 프로젝트가 Angular로 만들어졌기 때문에 입력 값을 설정하는 것만으로는 충분하지 않습니다. 모델 값을 업데이트해야 하는데, 이는 많은 비용이 듭니다. 변경이 아닌 입력이 실행되어야 한다는 사실을 파악하는 데 시간이 걸렸고, 그런 다음 프레임 간 작업 문제를 해결하는 데 많은 시간을 보냈습니다. . . .
젠장, 답을 찾는 데 오랜 시간이 걸렸습니다. 답을 찾기 위해 정말 열심히 노력했습니다.
결국 정리하자면, js가 입력 값을 수정한 후에는 이벤트가 실행되어야 합니다. 처음에는 변경이라고 생각했지만 많은 노력 끝에 마침내 입력 $('input').val(123).trigger('input') 이 괜찮다는 것을 알았습니다.
그러나 내 프로젝트는 더 복잡해지면 a.html은 iframe을 통해 참조됩니다. b.html의 html은 모두 jquery와 angle의 집합을 갖고 있으므로 b.html의 jquery를 사용하여 입력(버그일 수 있음), 즉 window를 트리거해야 합니다. .frames["f1"].contentWindow.$('input' ).val('55555555555').trigger('input') 대신
$('input',window.frames["f1"].contentWindow. document).val('55555555555').trigger('입력' )
ngModel 값이 업데이트/표시되지 않습니다
참조 http://www.cnblogs.com/whitewolf/p/ngmodel-zhi-bu-geng-xin-slash-xian-shi.html
이유
로 업데이트할 수 없습니다.1. 모델 값이 양식 유효성 검사 조건을 충족하지 않아 각도가 렌더링되지 않습니다
2. JavaScript의 특수 프로토타입 체인 상속 메커니즘으로 인해 $scope의 속성 할당을 상위 $scope
빠른 이유 2: ngModel의 속성 값에 "."를 추가하면 JavaScript 프로토타입 체인 검색이 시작됩니다.