是否可以向md-autocomplete的输入添加指令

时间:2016-08-30 13:08:48

标签: angularjs angular-material

我使用一个格式化输入的指令。现在我也想用它来输入md-autcomplete。

我认为我已经读过使用两个带有隔离范围的指令在一个元素上是不可能的。我对吗? 否则,我如何才能访问md-autocomplete的输入?

提前谢谢

进一步的信息:(角材料1.1 +角1.5。*)

组件来源:

.component('payeeInformation', {
       bindings: {...
  },                
  templateUrl: 'payeeInformationTemplate',

  controller:function(autocompleteService, $rootScope, $scope, $element, $compile, $document){
    var ctrl = this;
    this.genericAutocompleteSearch = autocompleteService.genericSearch;

    addDirectiveToInputOfAutomplete('#my-input');

    function addDirectiveToInputOfAutomplete(id){
      var myAutoCompleteInput = angular.element($element[0].querySelector(id));
      myAutoCompleteInput.attr("my-directive");
      $compile(myAutoCompleteInput)($scope);
  }
}

1 个答案:

答案 0 :(得分:1)

这个概念证明似乎有效 - CodePen

标记

<md-autocomplete ... md-input-id="myAutoCompleteInput">

JS - 指令

.directive('test', function () {
    return {
        restrict: 'A',
        scope: {
            text: '@text'
        },
        link:function(scope,element){
            console.log(scope.text);
        }
    };
});

JS - 控制器

$timeout(function () {
  var myAutoCompleteInput = angular.element($element[0].querySelector('#myAutoCompleteInput'));
  myAutoCompleteInput.attr("test", "test");
  myAutoCompleteInput.attr("text", "blah");
  $compile(myAutoCompleteInput)($scope);
});

在控制台中,您可以看到指令中的console.log输出“blah”。控制器中的$ timeout需要获取带有id的md-autocomplete元素。