AngularJS 응용 프로그램에서 작업 중이며 다음과 같은 작업이 있습니다.
1) 버튼을 클릭합니다.
2) variableA === true이면 모달을 출력합니다.
3) variableA === false이면 모달을 팝핑하지 않고 다른 링크로 이동하십시오.
자바 스크립트를 통해 데이터 대상을 변경하십시오.
<span id = "id1" ng-click="getClickType($event,row)" href=""> Text </span>
JS :
지금, 나는 다음과 같은 코드로 달성
HTML 노력하고 있어요 그래서
$scope.getClickType = function(event,row){
$scope.activeElement = event.target;
if(row.type == "A"){
$scope.activeElement.dataset.target = "#ModalA";
$scope.activeElement.dataset.toggle = "modal";
/* Here I don't have to use the hack and the data target changes automatically and the modal pops up*/
}
else{
someFunction().then(someOtherFunction);
}
}
someOtherFunction(msg){
if (msg.varA == true){
var f1 = $scope.activeElement.dataset.target; //hack
$scope.activeElement.dataset.target = "#ModalB";
$scope.activeElement.dataset.toggle = "modal";
if(f1 != $scope.activeElement.dataset.target){ //hack If statement
$timeout(function() {
$scope.activeElement.click();
});
/* Here i have use a hack and click on the element again to show the modal*/
}
}
else{
$scope.activeElement.dataset.target = "";
$scope.activeElement.dataset.toggle = "";
window.open(someURL);
/* works fine*/
}
}
당신이 볼 수있는, 내가 해킹을 사용하고 있습니다 ModalB. someOtherFucntion()에서 dataset.target을 변경해도 모달이 팝업되지 않습니다. 다시 표시하려면 활성 요소를 다시 클릭해야합니다.
내 질문 :
왜 데이터 타겟을 변경하려면 다시 activeElement를 클릭해야합니까?
두 번째 기능에서만 필요한 이유는 무엇입니까?
어떤 도움
은 높게 평가 될 것이다.
미리 감사드립니다.
안녕하세요, SomeFunction을, 나는 다음 결과 집합 (MSG)와 someOtherFunction에 약속을 반환 데이터베이스에서 저장 프로 시저를 호출하고 있습니다. 나에게 설명해 주시겠습니까? "$ scope에서 modalB를 실행하려고 했습니까? $ apply function"? 어떻게하면 될까요? - 고마워요 –
또 다른 한가지는 $ http가이 약속을 처리합니까? 그렇지 않다면 $ q.when 메소드를 사용하여이 약속을 마무리 할 것을 제안합니다. https://docs.angularjs.org/api/ng/service/$q#when – erhardos
안녕하십니까, $ http가 처리 중입니다. 응용 프로그램의 모든 컨트롤러에서 사용하는대로 변경할 수 없습니다. $ scope. $ apply에서 명령문을 실행하려고 시도했지만 데이터 범위 대상을 변경 한 후 $ scope. $ apply를 실행했지만 아무런 효과가 없습니다. 해킹을 사용하고 있어도 왜 그런 일이 일어나고 있는지 이해하고 싶습니다. –