2014-01-09 2 views
1

jQuery UIAngularJS UI 라우터에 대한 질문이 있습니다. 내 응용 프로그램에서 jQuery UI 테마를 사용하고 싶습니다만, AngularJS UI 라우터를 사용하면 DOM 트리이 완료되지 않았습니다.jQuery UI 및 AngularJS UI 라우터의

어떻게 AngularJS UI 라우터의 템플릿에 jQuery UI 요소를 추가 할 수 있습니까?

Example of jQuery UI themes

내 영어 죄송합니다.

답변

1

MonkeyVoodoo는 지적한대로 Twitter Bootstrap을 Angular와 함께 사용하는 프로젝트가 있습니다. 그것은 잘 관리되고 작업은 이미 완료되었습니다.

jQuery UI를 사용해야하는 경우 직접 지시문을 작성하고 직접 관리해야합니다. 각각은 어렵지 않지만 jQuery UI에는 많은 옵션이있는 위젯이 많이 있습니다.

경로를 변경할 때 DOM을 대체하는 방법은 지시문이 필요한 이유입니다. DOM을 서버에서 직접 캐싱 된 것으로 바꿉니다. 라우트를 마지막으로 볼 때 제거 된 버전이 렌더링되지 않았습니다. 즉, 경로가 변경 될 때마다 jQuery UI 위젯을 초기화하기 위해 jQuery UI 함수를 실행해야합니다.

지시어는 새로운 DOM을 컴파일 할 때마다 자동으로 실행되므로 여기에 표시됩니다. "jQuery UI-ify"에 원하는 요소를 찾기 위해 지시문을 설정할 수 있습니다. 당신이 이것들을 변경하는 경우

<div id="radio"> 
    <input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label> 
    <input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label> 
    <input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label> 
</div> 

:

<div jq-ui-buttonset> 
    <input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label> 
    <input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label> 
    <input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label> 
</div> 

이 같은 .buttonset() 기능을 적용 할 지침 작성 :

myApp.directive('jqUiButtonset',function(){ 
    return { 
     restrict: "A", 
     link: function(elm){ 
      $(elm[0]).buttonset(); 
     } 
    } 
}); 
당신의 예에서, 버튼 세트, 그것의 마크 업을 가지고

이것은 작동하며 매우 기본적인 예입니다. 특정 구성을 .buttonset() 호출에 전달할 수 있도록 확장해야합니다. 보시다시피, 이것은 .buttonset()에 대해서만 작동합니다. 당신은 사용하고자하는 각각의 것을 위해 하나를 만들어야 만 할 것이고, jQuery UI는 당신이 사용할 수있는 많은 것들을 가지고있다.

1

이것은 내 코드입니다. 그것은 내 프로젝트에서 작동합니다.

.directive('jqUiButtonset',function() { 
    return function(scope, element, attrs) { 
     $(element).buttonset(); 
    } 
})