態如果您要啟動一個AngularJS項目,則可能需要將所有組件寫成Angular。儘管當然有可能重複使用現有的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>
<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>
<span>{ </span> <span>"name": "Alabama", </span> <span>"abbreviation": "AL" </span><span>}</span>
<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>
} >如何使用Typeahead?打字,您可以使用鍵入選項的屬性。此屬性允許您在選擇匹配時指定一個函數。該函數將通過選定的項目傳遞。例如: //對所選項目 $ scope.getStates = function(val){
記住將此CSS包含在您的主CSS文件中或HTML文件中的>如何通過使用Typeahead-min-min-length屬性來完成打字機下拉下拉中的建議數量?此屬性指定在打字開始之前必須輸入的最小字符數。
};
>我可以在AngularJS中使用Bootstrap使用Typeahead?該模塊根據Bootstrap的標記和CSS提供了一組AngularJS指令。 Typeahead指令可用如下:
在此示例中,狀態是一個狀態。狀態數組,$ viewValue是用戶輸入的值,Limitto:8將建議數限制為8。 AngularJS? >使用Typeahead與AngularJS中的遠程數據使用,您可以使用$ HTTP服務從遠程服務器獲取數據。打字機屬性可用於將輸入字段綁定到被提取的數據。例如:
>返回$ http.get('/api/state',{params:{
})。 item.name;
});};
};
在此示例中,getStates是一個基於遠程服務器的狀態的函數用戶。
以上是使用AngularJS創建一個打字機小部件-SitePoint的詳細內容。更多資訊請關注PHP中文網其他相關文章!