【发布时间】:2012-10-09 04:45:39
【问题描述】:
我在我的页面上使用 AjgularJS,并希望添加一个字段以使用来自 jqueryui 的自动完成功能,并且自动完成功能不会触发 ajax 调用。
我已经在没有 angular(ng-app 和 ng-controller)的页面上测试了脚本,它运行良好,但是当我将脚本放在有 angularjs 的页面上时,它停止工作。
有什么想法吗?
jquery 脚本:
$(function () {
$('#txtProduct').autocomplete({
source: function (request, response) {
alert(request.term);
},
minLength: 3,
select: function (event, ui) {
}
});
});
- 有趣的提示:当我在 Chrome 检查器上调用脚本时,自动完成功能开始工作!!!
- 版本:AngularJS:1.0.2 - JqueryUI:1.9.0
结论: jQueryUI 的自动完成小部件必须从 AngularJS 的自定义指令内部初始化,例如:
标记
<div ng-app="TestApp">
<h2>index</h2>
<div ng-controller="TestCtrl">
<input type="text" auto-complete>ddd</input>
</div>
</div>
角度脚本
<script type="text/javascript">
var app = angular.module('TestApp', []);
function TestCtrl($scope) { }
app.directive('autoComplete', function () {
return function postLink(scope, iElement, iAttrs) {
$(function () {
$(iElement).autocomplete({
source: function (req, resp) {
alert(req.term);
}
});
});
}
});
</script>
【问题讨论】:
-
您应该尝试将它们加载到 $(document).ready();还要检查 firebug 控制台中的错误。
-
同意 - 您需要检查 AngularJS 和 JQuery 之间的冲突。在一个简单的测试中似乎没有:jsfiddle.net/mccannf/w69Wt
-
这可能与您看到的问题无关,但我认为您应该在自定义指令(链接函数)中使用 jquery。
-
谢谢大家,对我有用的解决方案是 tosh 建议的,为此创建了一个自定义指令!!!
标签: jquery jquery-ui angularjs jquery-autocomplete