2017-05-25 26 views
0

JQueryを使用せずにAngularJSを使用してオートコンプリートを作成しようとしています。私はthis exampleに従っていた。ここでHTMLコードがある:ここでAngularJS 1.4.4では "TypeError:iElement.autocompleteは関数ではありません" AngularJS 1.0.0ではエラーはありません

<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); 
    }; 
}); 

上記のコードは角度-1.0.0で完璧に動作します。しかし、angular-1.4.4を使用した場合、ブラウザが壊れて、私のブラウザでエラーが発生します:TypeError: iElement.autocomplete is not a function。この問題を回避する方法はありますか?angular-1.4.4

注:JQuery、angular-uiまたは他社製のライブラリを使用して、なしでを使用しています。

答えて

0

あなたがフォローしているのは古いバージョンの角度を使用している古い例です。だからこそ、それは働いていないのです。

iElementangular.elementでラップし、triggerHandlerを使用している可能性があります。 またはjQueryのような$でそれをラップしようと使用している場合:それが動作する場合でも

$(iElement).trigger('input'); 

しかし、私の提案、角度-UI 1に切り替えることです。単純にはるかに優れた、強力かつ簡単に:答えを

https://angular-ui.github.io/bootstrap/#!#%2Ftypeahead

+0

こんにちは感謝。しかし、** JQuery、angular-ui、または他のサードパーティのライブラリを使用しないで**動作させようとしています。私は私の質問を編集しました。私の答えでは –

+1

も、角度を使用して可能な解決策があります。 iElementをangular.element: 'angular.element(iElement)'で囲み、triggerHandlerを使用して入力をトリガーします:http://api.jquery.com/triggerHandler/ – quirimmo

関連する問題