需要指令字段类型中的字段

时间:2015-09-11 18:57:52

标签: angularjs angular-formly

参考此示例:http://jsbin.com/cenugiziju/edit?html,js,output

我创建了一个指令:example-directive 该指令由templateUrl组成,该模板在此html文件中具有标签和输入。此字段在required内标记为vm.formFields

如果您在“表单”部分中查看,即使未填充所需的指令,您也会注意到$valid已设置为true。我原以为这是false

有没有办法让Formly要求从包含字段的自定义指令引入的字段?

1 个答案:

答案 0 :(得分:2)

确定 抱歉混淆和延迟。 我创造了你想要的答案。 因为您输入的指令实际上需要使用您需要的值将选项发送到该指令... 这是工作示例......这意味着你需要自己处理所有的验证等等,因为你没有通过FormalyJS生成元素,而是在你自己的指令中。(确保没有其他方法可以做到这一点。) ..)

这是带有required / maxlength / minlength:

的更正代码

jsbin

我实际做的是将Formly的选项传递给我的指令并将验证添加到它

   app.directive('exampleDirective', function() {
return {
  templateUrl: 'example-directive.html',
  scope:{
    options:'=options',
    ngModel:'=ngModel'
  },
  link:function(scope, element, attrs){
    scope.isRequired = scope.options.templateOptions.required;
    scope.minValue = scope.options.templateOptions.min;
    scope.maxValue = scope.options.templateOptions.max;
  }
};

});

<script type="text/ng-template" id="example-directive.html">
  <div class="form-group">
    <label for="{{::id}}">{{options.templateOptions.label}}</label>
    <input id="{{::id}}" name="{{::id}}" class="form-control" ng-model="ngModel" ng-required="isRequired" ng-minLength="{{minValue}} ng-maxLength={{maxValue}}"/>
  </div>
</script>

这是vm.formFields中模板的添加  模板:&#39;&#39;

所以现在当你想要添加一个字段时,你需要将数据传递给指令并在指令中添加相应的代码...... 我对Formly并不是很熟悉,但这是我能给你的解决方案

注意: 我将选项传递给指令,因为这是FormalyJS构造它的方式....你总是可以使用自己的......但是因为它在形式指令之后呈现,所以认为它会更容易

修改

这是更新的JSBIN

你可以看到我必须在指令中添加ngModel ...你也可以通过require然后使用它,我更喜欢这样做...但你必须将它传递给div定义指令...... 签出更新的代码