AngularJS 프로젝트를 시작하는 경우 모든 구성 요소를 각도로 작성할 수 있습니다. 기존 jQuery 플러그인을 재사용하는 것은 확실히 가능하지만, 지침 안에 많은 jQuery를 던지는 것이 항상 올바른 방법은 아닙니다. 저의 조언은 먼저 더 간단하고 더 나은 방식으로 순수한 각도로 동일한 것을 구현할 수 있는지 확인하는 것입니다. 이렇게하면 응용 프로그램 코드를 깨끗하고 유지 관리 할 수 있습니다. 초보자를 대상으로하는이 튜토리얼은 AngularJS가있는 간단한 유형의 위젯을 만들기 위해 독자들을 안내합니다.
개요
이 튜토리얼에서는 누군가가 텍스트 상자에 입력하기 시작하자마자 제안을 생성하는 간단한 유형의 헤드 위젯을 만들 것입니다. 최종 제품이 매우 구성 가능하고 기존 시스템에 쉽게 연결할 수 있도록 앱을 구조적으로 설계 할 것입니다. 창조 과정과 관련된 기본 단계는 다음과 같습니다.
<span>var typeAhead = angular.module('app', []);
</span>
typeAhead<span>.factory('dataFactory', function($http) {
</span> <span>return {
</span> <span>get: function(url) {
</span> <span>return $http.get(url).then(function(resp) {
</span> <span>return resp.data; // success callback returns this
</span> <span>});
</span> <span>}
</span> <span>};
</span><span>});</span>
typeAhead<span>.controller('TypeAheadController', function($scope<span>, dataFactory</span>) { // DI in action
</span> dataFactory<span>.get('states.json').then(function(data) {
</span> $scope<span>.items = data;
</span> <span>});
</span> $scope<span>.name = ''; // This will hold the selected item
</span> $scope<span>.onItemSelected = function() { // this gets executed when an item is selected
</span> <span>console.log('selected=' + $scope.name);
</span> <span>};
</span><span>});</span>
typeAhead<span>.directive('typeahead', function($timeout) {
</span> <span>return {
</span> <span>restrict: 'AEC',
</span> <span>scope: {
</span> <span>items: '=',
</span> <span>prompt: '@',
</span> <span>title: '@',
</span> <span>subtitle: '@',
</span> <span>model: '=',
</span> <span>onSelect: '&'
</span> <span>},
</span> <span>link: function(scope<span>, elem, attrs</span>) {
</span> <span>},
</span> <span>templateUrl: 'templates/templateurl.html'
</span> <span>};
</span><span>});</span>
<:> OnSelect : 메소드 바인딩, 선택이 끝나면 컨트롤러 범위에서 함수를 실행하는 데 사용됩니다.
참고 : 예제 JSON 응답은 다음과 같습니다.
<span>var typeAhead = angular.module('app', []);
</span>
typeAhead<span>.factory('dataFactory', function($http) {
</span> <span>return {
</span> <span>get: function(url) {
</span> <span>return $http.get(url).then(function(resp) {
</span> <span>return resp.data; // success callback returns this
</span> <span>});
</span> <span>}
</span> <span>};
</span><span>});</span>
먼저 사용자가 입력 할 입력 텍스트 필드를 렌더링합니다. 스코프 속성 프롬프트는 자리 표시 자 속성에 할당됩니다. 다음으로, 우리는 상태 목록을 반복하고 이름 및 약어 속성을 표시합니다. 이 속성 이름은 제목 및 자막 범위 속성을 통해 구성됩니다. 지침 NG-M-MouseEnter 및 NG 클래스는 사용자가 마우스로 호버링 할 때 항목을 강조하는 데 사용됩니다. 다음으로, 우리는 필터 : 모델을 사용합니다.이 모델은 입력 필드에 입력 된 텍스트별로 목록을 필터링합니다. 마지막으로, 우리는 입력 텍스트 필드가 비어 있거나 사용자가 항목을 선택했을 때 NG-Hide 지시문을 사용하여 목록을 숨겼습니다. 선택한 속성은 핸들 사이드 () 함수 내부에서 true로 설정되었으며 누군가 입력 필드에 입력을 시작할 때 false false (제안 목록을 표시하기 위해)로 설정됩니다.
4 단계 : 링크 함수를 업데이트하십시오
다음으로 아래와 같이 지시문의 링크 기능을 업데이트하겠습니다.
함수 handleSelection ()은 선택한 상태 이름으로 범위 속성, 모델을 업데이트합니다. 그런 다음 현재 및 선택된 속성을 재설정합니다. 다음으로 onselect () 함수를 호출합니다. 할당 스코프 .model = selectedItem이 바운드 컨트롤러 스코프 속성을 즉시 업데이트하지 않기 때문에 지연이 추가됩니다. 모델이 선택한 항목으로 업데이트 된 후 컨트롤러 스코프 콜백 함수를 실행하는 것이 바람직합니다. 이것이 우리가 $ 타임 아웃 서비스를 사용한 이유입니다.
또한, 함수 iscurrent () 및 setCurrent ()는 템플릿에서 함께 사용하여 자동 완전 제안의 항목을 강조합니다. 다음 CSS는 하이라이트 프로세스를 완료하는 데 사용됩니다.
typeAhead<span>.controller('TypeAheadController', function($scope<span>, dataFactory</span>) { // DI in action
</span> dataFactory<span>.get('states.json').then(function(data) {
</span> $scope<span>.items = data;
</span> <span>});
</span> $scope<span>.name = ''; // This will hold the selected item
</span> $scope<span>.onItemSelected = function() { // this gets executed when an item is selected
</span> <span>console.log('selected=' + $scope.name);
</span> <span>};
</span><span>});</span>
결론 typeAhead<span>.directive('typeahead', function($timeout) {
</span> <span>return {
</span> <span>restrict: 'AEC',
</span> <span>scope: {
</span> <span>items: '=',
</span> <span>prompt: '@',
</span> <span>title: '@',
</span> <span>subtitle: '@',
</span> <span>model: '=',
</span> <span>onSelect: '&'
</span> <span>},
</span> <span>link: function(scope<span>, elem, attrs</span>) {
</span> <span>},
</span> <span>templateUrl: 'templates/templateurl.html'
</span> <span>};
</span><span>});</span>
CSS를 사용하여 Typehead 드롭 다운의 모양을 사용자 정의 할 수 있습니다. 클래스 .dropdown-menu를 사용하여 드롭 다운 메뉴를 타겟팅 할 수 있습니다. 예를 들어, 배경색과 글꼴 색상을 변경하려면 다음 CSS 코드를 사용할 수 있습니다. .Dropdown-menu {<span><span><span><input</span> type<span>="text"</span> ng-model<span>="model"</span> placeholder<span>="{{prompt}}"</span> ng-keydown<span>="selected=false"</span> /></span>
</span><span><span><span><br</span>/></span>
</span>
<span><span><span><div</span> class<span>="items"</span> ng-hide<span>="!model.length || selected"</span>></span>
</span> <span><span><span><div</span> class<span>="item"</span> ng-repeat<span>="item in items | filter:model track by $index"</span> ng-click<span>="handleSelection(item[title])"</span> <span>style<span>="<span>cursor:pointer</span>"</span></span> ng-class<span>="{active:isCurrent($index)}"</span> ng-mouseenter<span>="setCurrent($index)"</span>></span>
</span> <span><span><span><p</span> class<span>="title"</span>></span>{{item[title]}}<span><span></p</span>></span>
</span> <span><span><span><p</span> class<span>="subtitle"</span>></span>{{item[subtitle]}}<span><span></p</span>></span>
</span> <span><span><span></div</span>></span>
</span><span><span><span></div</span>></span></span>
색상 : #. 343a40; 주 CSS 파일 또는 html 파일의
어떻게 할 수 있습니까? Angularjs에서 bootstrap과 함께 typeahead를 사용하십시오.
angularjs에 bootstrap과 함께 Typeahead를 사용하려면 AngularJS 응용 프로그램에 ui.bootstrap 모듈을 포함시켜야합니다. 이 모듈은 Bootstrap의 마크 업 및 CSS를 기반으로 한 AngularJS 지침 세트를 제공합니다. TypeAhead 지시문은 다음과 같이 사용할 수 있습니다.
이 예에서는 상태가 상태 배열, $ viewValue는 사용자가 입력 한 값이며 Limitto : 8 제안 수를 8로 제한합니다. Angularjs?
angularjs의 원격 데이터와 함께 Typeahead를 사용하려면 $ http 서비스를 사용하여 원격 서버에서 데이터를 가져올 수 있습니다. TypeAhead 속성을 사용하여 입력 필드를 페치 된 데이터에 바인딩 할 수 있습니다. 예를 들면 :
$ scope.getStates = function (val) {
return $ http.get ( '/api/states', { params : { 이름 : val
}
};
html에서 getstates 함수를 사용할 수 있습니다. getStates ($ viewValue) "... />
이 예에서는 GetStates가 사용자. <..>
위 내용은 AngularJS -SitePoint로 타이핑 위젯 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!