gpt4 book ai didi

javascript - 使用 typeahead 的 Angular float 输入标签

转载 作者:太空狗 更新时间:2023-10-29 13:50:13 24 4
gpt4 key购买 nike

我使用了这里的一种样式:http://tympanus.net/Development/TextInputEffects/index.html

要创建输入指令,请参阅 plunker:https://plnkr.co/edit/wELJGgUUoiykcp402u1G?p=preview

这对于标准输入字段非常有效,但是,我正在努力使用 Twitter 提前输入:https://github.com/twitter/typeahead.js/

问题 - 如何将我的 float 输入标签与预输入一起使用?

app.directive('floatInput', function($compile) {
return {
restrict: 'E',
replace: true,
transclude: true,
scope: {
elemTitle: '=elemTitle',
elemtId: '=elemeId'
},
templateUrl: 'input-template.html',
link: function(scope, elem, attrs) {
var ngModelName = elem.attr('input-model');
var inputElem = angular.element(elem[0].querySelector('input'));
inputElem.attr('ng-model', ngModelName);

$compile(inputElem)(scope);
$compile(inputElem)(scope.$parent);

var inputLabel = angular.element(elem[0].querySelector('label span'));
inputLabel.attr('ng-class', '{\'annimate-input\' : '+ngModelName+'.length > 0}');
$compile(inputLabel)(scope);
},
controller: function($scope) {
$scope.title = $scope.elemTitle;
$scope.inputId = $scope.elemId
}
}
})

HTML:

<div>
<span class="input input--juro">
<input class="input__field input__field--juro" type="text" id="{{inputId}}" ng-model="tmp" />
<label class="input__label input__label--juro" for="{{inputId}}">
<span class="input__label-content input__label-content--juro">{{title}}</span>
</label>
</span>
</div>

最佳答案

据我所知,实现此目的的最简单方法是在指令的 link 函数中初始化预输入。为了使用可用选项初始化预输入,我将为指令创建一个可选参数,并在提供列表时有选择地将输入初始化为预输入。

下面是指令的外观示例:

app.directive('floatInput', function($compile) {
return {
restrict: 'E',
replace: true,
transclude: true,
scope: {
elemTitle: '=elemTitle',
elemtId: '=elemeId',
typeaheadSrc: '=?typeaheadSrc'
},
templateUrl: 'input-template.html',
link: function(scope, elem, attrs) {
var inputElem = angular.element(elem[0].querySelector('input'));

if(scope.typeaheadSrc && scope.typeaheadSrc.length > 0){
var typeahead = jQuery(inputElem).typeahead({
hint: true,
highlight: true,
minLength: 1
}, {
name: 'typeahead',
source: substringMatcher(scope.typeaheadSrc)
});
}
},
controller: function($scope) {
$scope.title = $scope.elemTitle;
$scope.inputId = $scope.elemId
}
}
});
// from http://twitter.github.io/typeahead.js/examples/
var substringMatcher = function(strs) {
return function findMatches(q, cb) {
var matches= [],
substrRegex = new RegExp(q, 'i');

$.each(strs, function(i, str) {
if (substrRegex.test(str)) {
matches.push({value: str});
}
});

cb(matches);
};
};

我已经更新了你的 plunker 以获得预期的结果:Plunker

关于javascript - 使用 typeahead 的 Angular float 输入标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38157005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com