将Angular Directives包含在自定义指令中

时间:2014-06-03 23:17:05

标签: javascript html angularjs angularjs-directive

我正在使用一个名为Almighty-Autocomplete的超棒的自定义自动完成指令。但是我错过了一些功能。

通用指令如下:

.directive('autocomplete', function () {
 var index = -1;

 return {
   restrict: 'E',
   scope: {
     searchParam: '=ngModel',
     suggestions: '=data',
     onType: '=onType',
     onSelect: '=onSelect'
   },
   controller: ['$scope', function ($scope) {...}
   link: function (scope, element, attrs) {

     var attr = '';

     // Default atts
     scope.attrs = {
       "placeholder": "start typing...",
       "class": "",
       "id": "",
       "inputclass": "",
       "inputid": ""
     };
   } ....

模板如下:

<div class="autocomplete {{ attrs.class }}" id="{{ attrs.id }}">
<input
    type="text"
    ng-model="searchParam"
    placeholder="{{ attrs.placeholder }}"
    class="{{ attrs.inputclass }}"
    id="{{ attrs.inputid }}"/>
</div> 

我还不足以将自己的东西添加到指令中。所以我想知道如何将Angular指令ng-blurng-focus添加到自动完成指令中,以便在我使用它时

<autocomplete ng-model="truck.license.number" 
              attr-placeholder="VD 102 203" data="placa_numeros"
              on-type="updateNumeros"
              on-select="select"
              ng-blur="offFocus()"
              ng-focus="onFocus()">
</autocomplete>

我可以让ng-blurng-focus执行一项功能。

1 个答案:

答案 0 :(得分:0)

那些角度指令旨在与特定HTML元素一起使用,而不是任何元素。例如,如果您为ngFocus重新发送documentation,它会告诉您它本应在使用中:

window, input, select, textarea, a

因此,为了在自定义指令中使用这些指令而不是使用&#34; autocomplete&#34;作为元素,您需要使用上述元素之一。