使用AngularJS創建一個打字機小部件-SitePoint
態如果您要啟動一個AngularJS項目,則可能需要將所有組件寫成Angular。儘管當然有可能重複使用現有的jQuery插件,但是在指令中扔一堆jQuery並不總是正確的方法。我的建議是首先檢查是否可以以更簡單/更好的方式用純角度實現同一件事。這使您的應用程序代碼保持清潔和可維護。該教程針對初學者,使讀者通過Angularjs創建了一個簡單的打字窗口小部件。
鑰匙要點
- >教程指南通過創建帶有AngularJS的打字窗口小部件,該小部件在文本框中提供了建議。該小部件的設計為高度可配置並容易集成到現有系統中。 該過程涉及建立與RESTFUL API交互的工廠,並返回JSON數據以自動完成建議,創建一個指令,以封裝打字機輸入字段,並為該指令創建模板。該指令可配置為最終用戶調整選項,例如JSON對象屬性,以顯示作為建議範圍中的建議的一部分,並將其模型保存在控制器的範圍中。 >教程還解釋瞭如何更新指令的鏈接功能並配置指令以供使用。最終產品是帶有配置選項的AngularJS打字小部件,可以使用CSS進一步自定義。完整的源代碼可在GitHub上下載。
- 概述 在本教程中,我們將構建一個簡單的打字小部件,該小部件在某人開始輸入文本框後立即提出建議。我們將以最終產品的配置方式來構建應用程序,並可以輕鬆地插入現有系統。創建過程中涉及的基本步驟是:
創建一個與Restful API交互的工廠,並返回將用於自動完整建議的JSON。
>創建一個指令,該指令將使用JSON數據並封裝打字機輸入字段。- >保持指令可配置,以便最終用戶可以配置以下選項。
- 配置選項
控制器範圍中的模型將保存所選項目。
- >控制器範圍中的功能在選擇項目時執行。
- >打字輸入字段的佔位符文本(提示)。
步驟1:建造一個獲取數據的工廠
作為第一步,讓我們創建一個使用Angular的$ HTTP服務與Restful API互動的工廠。看看以下片段:<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>
>步驟2:創建指令
讓我們從如下所示的Typeahead指令開始。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>
- 項目:用於將JSON列表傳遞給孤立範圍。
提示:用於傳遞佔位符文本的一種綁定打字機輸入字段。 - >標題和字幕:自動完整字段的每個條目都有標題和字幕。大多數Typeahead小部件都是這樣工作的。他們通常(如果不是總是)在下拉建議中的每個條目中都有兩個字段。如果JSON對象具有其他屬性,則可以用作傳遞在下拉列表中每個建議中將顯示的兩個屬性的一種方式。在我們的情況下,標題對應於狀態的名稱,而字幕表示其縮寫。
- 型號:兩種方式綁定以存儲選擇。
- OnSelect:方法綁定,一旦選擇結束後,用於執行控制器範圍中的函數。
<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>
>步驟3:創建模板
現在,讓我們創建一個將由該指令使用的模板。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>
步驟4:更新鏈接函數
接下來,讓我們更新指令的鏈接功能,如下所示。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>
步驟5:配置並使用指令
最後,讓我們在HTML中調用指令,如下所示。<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>
結論
本教程向您展示瞭如何使用配置選項創建AngularJS Typeahead小部件。完整的源代碼可在GitHub上下載。如果某事尚不清楚或您想改進任何東西,請隨時發表評論。另外,別忘了檢查現場演示。>關於創建使用AngularJS >如何通過使用CSS來自定義Typeahead下拉列表的外觀?您可以使用class .Dropdown-menu來定位下拉菜單。例如,如果要更改背景顏色和字體顏色,則可以使用以下CSS代碼:.dropdown-menu { background-color:#f8f9fa;
顏色:#color:#color: # 343A40;}
記住將此CSS包含在您的主CSS文件中或HTML文件中的標籤中。 >>如何通過使用Typeahead-min-min-length屬性來完成打字機下拉下拉中的建議數量?此屬性指定在打字開始之前必須輸入的最小字符數。
>如何使用Typeahead?打字,您可以使用鍵入選項的屬性。此屬性允許您在選擇匹配時指定一個函數。該函數將通過選定的項目傳遞。例如:
在您的控制器中,您可以這樣定義這樣的ONSELECT函數:$ scope.onelect = function(item,model,label){ //對所選項目
};
>我可以在AngularJS中使用Bootstrap使用Typeahead?該模塊根據Bootstrap的標記和CSS提供了一組AngularJS指令。 Typeahead指令可用如下:
在此示例中,狀態是一個狀態。狀態數組,$ viewValue是用戶輸入的值,Limitto:8將建議數限制為8。 AngularJS?
>使用Typeahead與AngularJS中的遠程數據使用,您可以使用$ HTTP服務從遠程服務器獲取數據。打字機屬性可用於將輸入字段綁定到被提取的數據。例如:
$ scope.getStates = function(val){
>返回$ http.get('/api/state',{params:{}
})。 item.name;
});
});};
}; 在您的html中,您可以使用這樣的getStates函數:
在此示例中,getStates是一個基於遠程服務器的狀態的函數用戶。
.dropdown-menu { background-color:#f8f9fa;
顏色:#color:#color: # 343A40;} >如何使用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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
