传递AngularJS组件中的所有属性

时间:2017-03-29 19:20:00

标签: javascript angularjs

是否可以将所有属性从组件实例传递到组件模板中的一个元素?

例如,我们说我有一个非常简单的组件:

angular.module('...').component('customInput', {
  templateUrl: '<input ng-minlength="8">',
  controller: function () { },
  bindings: { }
});

我有什么方法可以做这样的事情:

<custom-input arbitrary-directive></custom-input>

然后回来

<input ng-min-length="8" arbitrary-directive></input>

没有明确指定arbitraryDirective作为绑定?我只想将所有未指定的属性传递给内部元素。

1 个答案:

答案 0 :(得分:0)

我得到的解决方案比声明更有必要。它也有点hacky和脆弱。所以我对此并不高兴,但它确实有效。

在控制器中,添加一个类似于此的$postLink挂钩:

this.$postLink = function () {
  var input = $element.find('input'); // from the controller's second parameter, $element
  // copy directives and stuff over to inner input element
  angular.forEach($attrs, function (value, key) {
    if (key[0] === '$') {
      return;
    }

    var attr = $attrs.$attr[key];
    input.attr(attr, value);
  });
}