使用AngularJS创建一个打字机小部件-SitePoint
钥匙要点
- >教程指南通过创建带有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�...

zustand异步操作中的数据更新问题在使用zustand状态管理库时,经常会遇到异步操作导致数据更新不及时的问题。�...
