2014-12-04 4 views
0

각도보기의 양식이 있습니다. 그리고 폼의 버튼에서 $ http를 사용하여 서버에 요청을 보내기위한 이벤트를 추가했습니다. 서버에 요청을 보내기 전에 jQuery Validate를 사용하여 양식의 유효성을 검사해야합니다.컨트롤러의 뷰 컨텍스트에서 dom 요소

양식의 유효성을 검사하려면 컨트롤러에 양식의 DOM 참조가 필요합니다. 내 응용 프로그램에 이미 jQuery가 있습니다. 따라서 양식의 참조를 얻을 수 있습니다

$(selecter) or angular.element($(selecter)) 

그러나 두 경우 모두 요소의 참조를 얻기 위해 전체 문서를 검색합니다. 대신 뷰의 컨텍스트 내에서 요소를 검색해야 성능이 향상됩니다.

나는 각도 요소로 $ element를 사용하는 것을 보아왔다. 그러나 나중에 $ element의 사용은 권장되지 않으며 각도의 새 버전에서 가치가 하락할 수 있음을 알았습니다. 컨트롤러 내에서 $ element를 얻으려고 할 때 오류가 발생합니다. 그래서 그것은 이미 가치가 떨어 졌다고 생각합니다.

컨트롤러에서보기의 컨텍스트에서 dom 요소를 가져 오는 가장 좋은 방법은 무엇입니까?

답변

1

정확히 Mikalai가 말했듯이. 당신이 지침을 만들어야 할 모든 요소와 조작하려면 (이 각도 방법입니다 ..) 예를 들어

:

  • HTML <input type="text" select-all value="test" />
  • 지시

    app.directive('selectAll', function() { 
    return { 
        restrict: 'A', 
        link: function(scope, element, attrs) { 
         element.on('click', function() { 
          this.select(); 
         }); 
        }; 
    }); 
    

이를 지시문은 텍스트 요소의 모든 텍스트를 선택하기 만하면됩니다.

UPDATE는 :

나는 당신을 위해 plunker 만들었습니다. 이게 네가 원하는거야?

UPDATE 2

난 그냥 우리가 모두 여기에 평가 필요가 없다는 것을 깨달았다. 나도 몰라 왜 내가 처음에 그걸 넣었 어? 평가 또한 해로울 수 있습니다.

이 부분을보세요. plunker.

+0

이 경우에는 애플리케이션의 각 양식에 대해 새로운 지시문을 작성해야합니다. 따라서 컨트롤러를 사용하면 더 좋을 것입니다. – Indra

+0

또는 함수를 컨트롤러에 선언 한 다음 지시문에서 지시문을 사용하여 eval ('var fn = +'attrs.function) 지시문을 사용하여 이름을 사용할 수 있습니다. 나도 몰라, 그냥 생각 : – Clem

+0

사실 난 각도 js에, 당신 plunkr 또는 jsfiddle에 몇 가지 코드를 추가하시기 바랍니다 수 있습니다. – Indra

0

컨트롤러에서 볼 때 컨텍스트에서 dom 요소를 사용하는 것은 좋지 않습니다. dom에 액세스하려면 각도 지시문을 작성해야합니다.