2

У меня есть директива, которая обертывает uib-typeahead, дело в том, что я хочу заполнить uib-typeahead различными массивами объектов, что означает разные имена для ключей объектов внутри массивов I есть этотset атрибут uib-typeahead Динамически

Моей директива, которая оборачивает UIB машинописного

<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' 
} 

});

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> 

Теперь вместо этого

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

Я хочу это

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

и установить в ссылке директивы выражение т.е.

scope.expression = 'Clave as Clave.Nombre for Clave'; 

Пожалуйста, помогите, спасибо.

ответ

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> 
Смежные вопросы