自动完成不工作它抛出错误iElement.autocomplete不是一个功能

时间:2014-03-24 10:59:19

标签: javascript jquery angularjs angularjs-directive

我正在尝试使用Angularjs在搜索文本框上构建自动完成功能。但是收到错误iElement.autocomplete不是一个函数。

代码

  <body ng-controller='FriendController'>
  <form ng-submit="addFriend()">
 <input type="email" auto-complete ui-items="fbFriends" ng-model="friend" autofocus />
</form>

<ul ng-repeat="friend in friends">
  <li>
    {{friend.text}}
  </li>
</ul>

<script>
   var addFriendAppModule = angular.module('addFriendApp', []);
   addFriendAppModule.controller('FriendController',
    function($scope) {

      var friendArr = [];
    $scope.fbFriends = [
         {
          value: "manu", 
          email: "sept@gmail.com"
        },
        {
        value: "manu123", 
        email: "sept123@gmail.com"
        }
    ];
    $scope.friends = friendArr;         
    $scope.friend = '';

    $scope.addFriend = function() {
        var newFriend = $scope.friend.trim();
        if (newFriend.length === 0) {
            return;
        }
        friendArr.push(
            {text: newFriend}
        );
    };      
});

addFriendAppModule.directive('autoComplete', function($timeout) {
    return function(scope, iElement, iAttrs) {
        iElement.autocomplete({
            source: scope[iAttrs.uiItems],
            focus: function(event,ui) {
                iElement.val(ui.item.email);
                return false;
            },
            select: function(event, ui) {
                    iElement.val(ui.item.email);
                    return false;
                  //  iElement.trigger('input');
                   // iElement.trigger('submit');
            }
        }).data("autocomplete")._renderItem = function(ul, item) {
            return $("<li></li>")
                .data( "item.autocomplete", item )
                .append(item.email)
                .appendTo(ul);
        };
    }
});

谁能告诉我我想念的是什么?我也尝试过datalist html5标签用于自动完成,但它在IE8上不起作用。所以我放弃了这种方法。如果有人有更好的自动完成方法请分享。

1 个答案:

答案 0 :(得分:2)

由于IE8并不支持HTML5,而且在当前版本的angularjs中,它们已经放弃了对IE8的支持,因此它不会起作用。 Check here.