目錄
鑰匙要點
步驟1:建造一個獲取數據的工廠
>步驟2:創建指令
>步驟3:創建模板
步驟4:更新鏈接函數
步驟5:配置並使用指令
結論
>如何通過使用Typeahead-min-min-length屬性來完成打字機下拉下拉中的建議數量?此屬性指定在打字開始之前必須輸入的最小字符數。
>使用Typeahead與AngularJS中的遠程數據使用,您可以使用$ HTTP服務從遠程服務器獲取數據。打字機屬性可用於將輸入字段綁定到被提取的數據。例如:
};
首頁 web前端 js教程 使用AngularJS創建一個打字機小部件-SitePoint

使用AngularJS創建一個打字機小部件-SitePoint

Feb 22, 2025 am 08:44 AM

態如果您要啟動一個AngularJS項目,則可能需要將所有組件寫成Angular。儘管當然有可能重複使用現有的jQuery插件,但是在指令中扔一堆jQuery並不總是正確的方法。我的建議是首先檢查是否可以以更簡單/更好的方式用純角度實現同一件事。這使您的應用程序代碼保持清潔和可維護。該教程針對初學者,使讀者通過Angularjs創建了一個簡單的打字窗口小部件。

鑰匙要點

  • >教程指南通過創建帶有AngularJS的打字窗口小部件,該小部件在文本框中提供了建議。該小部件的設計為高度可配置並容易集成到現有系統中。 該過程涉及建立與RESTFUL API交互的工廠,並返回JSON數據以自動完成建議,創建一個指令,以封裝打字機輸入字段,並為該指令創建模板。該指令可配置為最終用戶調整選項,例如JSON對象屬性,以顯示作為建議範圍中的建議的一部分,並將其模型保存在控制器的範圍中。
  • >教程還解釋瞭如何更新指令的鏈接功能並配置指令以供使用。最終產品是帶有配置選項的AngularJS打字小部件,可以使用CSS進一步自定義。完整的源代碼可在GitHub上下載。
  • 概述
  • 在本教程中,我們將構建一個簡單的打字小部件,該小部件在某人開始輸入文本框後立即提出建議。我們將以最終產品的配置方式來構建應用程序,並可以輕鬆地插入現有系統。創建過程中涉及的基本步驟是:

創建一個與Restful API交互的工廠,並返回將用於自動完整建議的JSON。

>創建一個指令,該指令將使用JSON數據並封裝打字機輸入字段。
  • >保持指令可配置,以便最終用戶可以配置以下選項。
  • 配置選項
>作為建議的一部分顯示的確切的JSON對象屬性。

控制器範圍中的模型將保存所選項目。 >
    >控制器範圍中的功能在選擇項目時執行。
  1. >打字輸入字段的佔位符文本(提示)。

步驟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>
登入後複製
登入後複製
以前的代碼創建了一個名為DataFactory的工廠,該工廠從API中檢索JSON數據。我們不會介紹工廠的詳細信息,但是我們需要簡要了解$ HTTP服務的工作原理。您將URL傳遞到get()函數,該函數返回承諾。然後,對此諾言的另一個呼籲也返回另一個承諾(我們從工廠的get()函數中返回了這一承諾)。通過將成功回調的回報值傳遞給當時(),該承諾得到解決。因此,在控制器內部,我們不會直接與$ HTTP互動。相反,我們要求控制器中的工廠實例,並使用URL調用其get()函數。因此,我們與工廠交互的控制器代碼看起來像這樣:
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>
登入後複製
登入後複製
以前的代碼使用稱為狀態的API端點。 JSON返回美國州的JSON列表。數據可用時,我們將列表存儲在範圍模型項目中。我們還使用模型名稱保存所選項目。最後,當用戶選擇特定狀態時,onItemselected()函數將執行。

>步驟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: '&amp;'
</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:方法綁定,一旦選擇結束後,用於執行控制器範圍中的函數。
注意: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>
登入後複製
登入後複製

>步驟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>
登入後複製
登入後複製
首先,我們渲染一個輸入文本字段,用戶將在其中輸入。範圍屬性提示分配給佔位符屬性。接下來,我們瀏覽狀態列表,並顯示名稱和縮寫屬性。這些屬性名稱是通過標題和字幕範圍屬性配置的。指令NG-Mouseenter和NG類用於突出顯示用戶與鼠標徘徊的條目。接下來,我們使用過濾器:模型,該模型通過輸入字段中輸入的文本過濾列表。最後,當輸入文本字段為空或用戶選擇項目時,我們使用了NG-HIDE指令隱藏列表。所選屬性設置為true handleselection()函數內部,並將某人開始輸入輸入字段時設置為false(顯示建議列表)。

步驟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: '&amp;'
</span>    <span>},
</span>    <span>link: function(scope<span>, elem, attrs</span>) {
</span>    <span>},
</span>    <span>templateUrl: 'templates/templateurl.html'
</span>  <span>};
</span><span>});</span>
登入後複製
登入後複製
功能handleselection()用選定的狀態名稱更新範圍屬性,模型。然後,我們重置當前和選定的屬性。接下來,我們將函數OnSelect()稱為函數。添加延遲是因為分配範圍。 model= SelectedItem不會立即更新綁定的控制器範圍屬性。在使用所選項目更新模型後,希望執行控制器範圍回調函數。這就是我們使用$超時服務的原因。 此外,在模板中使用函數ISCurrent()和setCurrent(),以突出顯示自動完整建議中的條目。以下CSS還用於完成高光進程。
<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是一個基於遠程服務器的狀態的函數用戶。

以上是使用AngularJS創建一個打字機小部件-SitePoint的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1667
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1255
24
JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

See all articles