2

私はuib-typeaheadをラップするディレクティブを持っていますが、uib-typeaheadに配列の中のオブジェクトのキーの異なる名前を意味するオブジェクトの異なる配列を設定したいのですUIBはuib-typeahead属性を動的に設定する

<input-text-material-typeahead input-model="rendimiento.operador" label-model="textType" holder="Destino" color="#5E35B1" lista="Operadores" label="Destino"></input-text-material-typeahead> 

を先行入力ラップこの

私のディレクティブを持っており、これは根性ある

ng.app.directive('inputTextMaterialTypeahead', function() { 
return{ 
    restrict:'EA', 
    scope:{ 
     holder:'@', 
     color:'@', 
     lista:'@', 
     item:'@', 
     inputModel:'=', 
     method:'@' 
    }, 
    controller:function($scope, $listas, $element){ 
     $scope.getItem = function(val){ 
      return $listas[$scope.lista](val, function(response){ 
       return response.map(function(item) { 
        return item; 
       }); 
      }); 
     } 

     $scope.onSelect = function($item, $model, $label){ 
      // 
      $scope.inputModel = $item; 
     } 
    }, 
    link:function(scope, element, attrs, color){ 
     // 
     var input_text  = element.find('#input-text'); 
     var label_rendimiento = element.find('#label-rendimiento'); 

     input_text.on('focus', function(){ 
      label_rendimiento.addClass('show'); 
      label_rendimiento.css({'color':scope.color}); 
      element.find('.input-rendimiento').css({'border-bottom':'solid 3px '+scope.color+''}); 
      input_text.attr('placeholder', ''); 
     }); 

     input_text.on('blur', function(){ 
      if(!input_text.val()){ 
       label_rendimiento.removeClass('show'); 
       input_text.attr('placeholder', scope.holder); 
       element.find('.input-rendimiento').css({'border-bottom': 'solid 1px #BDBDBD'});  
      } 
      else{ 
       label_rendimiento.css({'color':'#BDBDBD'}); 
       element.find('.input-rendimiento').css({'border-bottom': 'solid 1px #BDBDBD'});  
      } 
     }); 
    }, 
    templateUrl:ng.components + '/input-typeahead-material.html' 
} 

});

ディレクティブ

<div class="col-xs-12 nopad"> 
    <label class="label-rendimiento" id="label-rendimiento">{{holder}}</label> 
</div> 
<div class="col-xs-12 nopad input-rendimiento"> 
    <input ng-model="whatever" placeholder="Unidad" id="input-text" uib-typeahead="Clave as Clave.Nombre for Clave in getItem($viewValue)" typeahead-loading="loadingLocations" ng-model-options="{debounce:800}" typeahead-on-select="onSelect($item, $model, $label)"/> 

    <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i> 
</div> 

のHTMLではなく、この

uib-typeahead="Clave as Clave.Nombre for Clave in getItem($viewValue)" 

の私は

scope.expression = 'Clave as Clave.Nombre for Clave'; 
すなわち、この

uib-typeahead="{{expression}} in getItem($viewValue)" 

とディレクティブリンクに式を設定したいです

ご協力ありがとうございます。

答えて

1

それはこの

uib-typeahead="Label as Label[key] for Label in getItem($viewValue)" 

ようなものだったとdirectivedeclarationに私はちょうど範囲

scope:{ 
    holder:'@', 
    color:'@', 
    lista:'@', 
    item:'@', 
    inputModel:'=', 
    key:'@' 
}, 

に 'キー' を追加して呼ばれているディレクティブは、この

<input-text-material-typeahead key="Operador" input-model="rendimiento.operador" label-model="textType" holder="Destino" color="#5E35B1" lista="Operadores" label="Destino"></input-text-material-typeahead> 
のようなものであるとき、
関連する問題