【问题标题】:Is it possible to add a directive to the input of a md-autocomplete是否可以在 md-autocomplete 的输入中添加指令
【发布时间】:2017-01-06 19:00:58
【问题描述】:

我使用一个指令来格式化我的输入。现在我还想将它与 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);
  }
}

【问题讨论】:

标签: angularjs angular-material


【解决方案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 元素所必需的。

【讨论】:

  • 谢谢,但在我的情况下 $element[0].querySelector('#my-input') 为空。可能是这种情况,因为我在一个组件中工作吗?此外,我使用“控制器作为”-语法我应该使用 $scope 还是在此上编译输入?现在两者都不起作用
  • @ThomasZoé 首先,当您在浏览器中检查元素时,输入的 ID 是否为“my-input”?
  • @ThomasZoé 它在一个组件中应该不是问题...您能否将组件(或它的简化版本)添加到您的问题中?
  • @ThomasZoé 我认为如果您将 addDirectiveToInputOfAutomplete 中的代码包装在 $timeout 中,它应该可以工作。这是一个测试 - codepen.io/camden-kid/pen/zKOkyO?editors=1010
  • 谢谢,现在指令已添加到输入中。另外我更改了 myAutoCompleteInput.attr("my-directive");到 myAutoCompleteInput.attr("my-directive", "");
猜你喜欢
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多