>

ng-blur 를 실행하여 입력 텍스트 상자 외부를 클릭하면 인라인 편집에서보기를 읽기 전용보기 (수정하기 전에 있던 값)로 설정하려고합니다. . 그러나 예상대로 작동하지 않습니다.

내 코드 여기

<ul ng-init="showInput=false">
    <li ng-repeat="todo in todos">
      <span ng-show="!showInput" ng-click="showInput=!showInput">{{todo.title}}</span>
      <span><input ng-show="showInput"  ng-model="todo.title" ng-blur="showInput=true"></span>
    </li>
    </ul>

  • 답변 # 1

    문제에 대한 나의 가정에 따라 그것을 확인하고 잘못하면 문제를 설명하십시오.

    흐리기 기능 추가

       $scope.blurFunc = function(){
        $scope.showInput = true;
      }
    
    

    플런저

  • 답변 # 2

    문제

    스팬을 클릭하면 스팬이 숨겨지고 입력에 포커스가 없다는 메시지가 표시되므로 코드가 올바르게 작동하지 않습니다. 이러한 이유로 입력 ngBlur의 "외부"를 클릭하면 트리거가 발생하지 않습니다 (입력이 포커스를받지 않음). 이 범위 클릭을 확인하고 입력을 다시 클릭하십시오. 입력에 포커스가 있으며 외부를 클릭하면 ngBlur가 트리거됩니다.

    솔루션 1 (최고)

    스팬과 함께 지시문을 사용하십시오. 이 지시문은 범위를 클릭 할 때 입력에 중점을 둡니다. 코드를 더 이상 수정하지 않아도되지만 지식 부인 지시어가 필요합니다.

    솔루션 2 (가난하지만 지시문이 필요하지 않음)

    부울 변수가 두 개인 입력을 표시합니다. 마우스가 스팬/입력을 초과하면 하나입니다. 다른 하나는 클릭하면 true이고 ngBlur가 트리거되면 false입니다. 물론 당신은 그 <input ng-show="mouseOver || showInput"> 같은 somethink 필요 .

  • 이전 recursion - 왜 스키마와 파이썬에서 재귀 방정식에 대해 다른 반환 값을 구현합니까?
  • 다음 php - Ubuntu에서 조수와 함께 작동하도록 YaxGUI를 설치하는 방법은 무엇입니까?