我正在尝试使用AngularJS进行自动完成,而无需使用任何JQuery。我正在遵循这个例子。这是 html 代码:
<div ng-app='MyModule'>
<div ng-controller='DefaultCtrl'>
<input auto-complete ui-items="names" ng-model="selected">
selected = {{selected}}
</div>
</div>
这是控制器和指令:
function DefaultCtrl($scope) {
$scope.names = ["john", "Bill", "Charlie"];
}
angular.module('MyModule', []).directive('autoComplete', function($defer) {
return function(scope, iElement, iAttrs) {
scope.$watch(iAttrs.uiItems, function(values) {
iElement.autocomplete({
source: values,
select: function() {
setTimeout(function() {
iElement.trigger('input');
}, 0);
}
});
}, true);
};
});
上面的代码与angular-1.0.0完美配合。但是如果我使用 angular-1.4.4,它会中断,我的浏览器中出现一个错误,说:TypeError: iElement.autocomplete is not a function
.在 angular-1.4.4 中是否有任何解决方法?
注意:我正在尝试使其在不使用JQuery,angular-ui或任何第三方库的情况下工作。
您关注的是一个使用旧版本angular的旧示例。这就是它不起作用的原因。
也许用angular.element
包裹iElement
并使用triggerHandler
,它可能会起作用。或者,如果使用jQuery,请尝试用$ 包装它,例如:
$(iElement).trigger('input');
但我的建议,即使它有效,也是切换到角度 ui 的。简单更好、更强大、更简单:
https://angular-ui.github.io/bootstrap/#!#%2Ftypeahead