각도 JS는 하위 범위 변수 변경을 상위 범위로 전파합니다.
ChildCtrl에서 '새로운' 변수가 인스턴스화되더라도 변수 변경을 쉽게 ParentCtrl로 전파하려면 어떻게 해야 합니까?최소에서 0달러까지 추가 포인트 제공(실장 용이성 향상)
부모 Ctrl
ChildCtrl / ChildCtrl2 / ChildCtrl3 / ChildCtrl4
- 보다
ChildCtrl은 마스터 레이아웃과 ng뷰를 쉽게 추출할 수 없지만 모두 ParentCtrl의 동일한 기능에 의존합니다.
$scope.searchTerms는 ParentCtrl에 정의되어 있지만 ng-model='searchTerms'가 있는 입력 상자가 하위 컨트롤러 보기에 있습니다.이 변수가 변경되면 ChildCtrls에만 반영되지 않습니다.
예: http://jsfiddle.net/JHwxP/22/
HTML 부분
<div ng-app>
<div ng-controller="Parent">
parentX = {{x}} <br/>
parentY = {{y}}<br/>
<div ng-controller="Child">
childX = {{x}}<br/>
childY = {{y}}<br/>
<a ng-click="modifyBothScopes()">modifyBothScopes</a><br>
<br>
The changes here need to appear in 'Parent'. <input ng-model='y'>
</div>
</div>
</div>
컨트롤러
function Parent($scope) {
$scope.x= 5;
$scope.y= 5;
}
function Child($scope) {
$scope.modifyBothScopes= function() {
$scope.$parent.x++;
};
}
갱신하다
현재 공유 서비스 접근방식을 시도하고 있습니다.https://gist.github.com/exclsr/3595424
갱신하다
송신/방송 시스템 시험
해결된 문제:$scope를 보관하고 있었습니다.상위 및 변경 시 하위 $scope에 공간이 생성되었습니다.
솔루션:제가 $scope를 했어야 했어요.부모에서 search.displaces를 사용하고 자녀에서 변경되면 부모로 버블됩니다.
예: http://jsfiddle.net/JHwxP/23/
이는 프로토타입 상속이 작동하는 방식 때문입니다.
당신이 요청할 때$scope.x
하위 컨트롤러에서는 x가 해당 범위에 정의되어 있는지 확인하고 정의되지 않은 경우 상위 범위에서 x를 찾습니다.
하위 스코프의 에 할당하는 경우x
속성은 하위 범위만 수정합니다.
이 문제를 해결하고 공유 동작을 얻는 쉬운 방법은 객체 또는 배열을 사용하는 것입니다.
function ParentCtrl($scope) {
$scope.model = {x: 5, y: 5};
}
function ChildCtrl($scope) {
$scope.update = function(x, y) {
$scope.model.x = x;
$scope.model.y = y;
};
}
여기서 변경은 양쪽 범위에서 모두 표시됩니다.$scope.model
는 부모 범위와 자녀 범위 모두에서 동일한 개체를 참조합니다.
존 린드퀴스트가 비디오를 가지고 있어요
참조로 전달할 여러 개체를 만들 필요가 없는 또 다른 솔루션은 상위 컨트롤러에서 설정기 함수를 만드는 것입니다.
function ParentCtrl($scope) {
$scope.x = 5;
$scope.y = 5;
$scope.setX = function(value) {
$scope.x = value;
}
$scope.setY = function(value) {
$scope.y = value;
}
}
function ChildCtrl($scope) {
$scope.update = function(x, y) {
$scope.setX(x);
$scope.setY(y);
};
}
데이터를 같은 오브젝트에 포함시키는 것이 의미가 없을 경우, 이 방법이 더 깨끗하다는 것을 알게 됩니다.
또, 아이에게는, 미쳐 버릴 수도 있습니다.
function ChildCtrl($scope) {
var superSetX = $scope.setX;
$scope.setX = function(value) {
superSetX(value * 2);
};
...
}
이런 걸 찾고 있었어요이것을 읽고 첫 번째 해결책이 나왔다.상위 모델을 하위 컨트롤러와 공유할 수 있습니다.
여기 예가 있습니다.나는 심지어 내 요점을 증명하기 위해 여러 가지 항목들을 사용하고 있다.ChildController는 부모를 바꾸고 있어 마치 모두 같은 우주의 일부인 것처럼 말이야
언급URL : https://stackoverflow.com/questions/16972976/angular-js-propagate-child-scope-variable-changes-to-parent-scope
'source' 카테고리의 다른 글
JDBC를 사용할 때 SQL 문에 대한 로깅을 실행하는 방법 (0) | 2023.04.05 |
---|---|
ng-click 이벤트를 조건부로 하는 방법 (0) | 2023.04.05 |
Oracle JDBC 간헐적 연결 문제 (0) | 2023.03.31 |
angularjs 단위로 스크롤 (0) | 2023.03.31 |
네임스페이스 작업 시 SimpleXMlement를 찾을 수 없습니다. (0) | 2023.03.31 |