1

我有以下 plunkr:

http://plnkr.co/edit/M1uwZxZP7sXp5sPw7pxf?p=preview

我想要做的是:我想构建一个角度代码以在表单内自动生成输入,给定一个带有描述的 json 示例:

{'name': 'username', 'description': ['text', 'maxlength=16', 'required']}

为此,我使用了一个自定义指令,将输入附加到标签

<custominput></custominput>

转弯

<custominput>
   <input type='text'/>
</custominput>

然后我添加任何其他验证属性,如 minlength 和 maxlength。

在我的 plunkr 中,我可以向 custominput 标签添加属性,如下所示:

<custominput compiled="compiled" disabled="disabled"></custominput>

但是我怎样才能将这些属性添加到输入标签(也就是说,custominput 的孩子)?

更新 1

这个问题可以概括为:

如何从指令中添加带有角度指令的 HTML 元素/属性

示例:转动这个

<form name="form0">
    <input custom-directive>
</form>

进入这个:

<form name="form0">
    <input custom-directive type="text" ng-model="ctrl.username" ng-maxlength="15" ng-required="required">
</form>

来自指令

4

1 回答 1

1

您可以将它们添加到指令的模板部分。请参见下面的代码:

html代码

<form>
    <input custom-directive>
</form>

指令代码(我只是在脑海中写下这个,它可能不会是复制粘贴工作,但它肯定会朝着正确的方向前进)。

app.directive('customDirective', function() {
  return {
    restrict: 'A',
    controller: function($scope, attrService) {
      $scope.attributes = attrService.getAttrs;
    },
    link: function(scope, element, attrs) {
      element.attr('name', scope.attributes.name);
      // add more attributes
      console.log(scope.attributes) // ensure attributes is being pushed through from directive controller.
    }
  }
});

动态添加属性

于 2015-06-01T00:50:17.860 回答