需要来自指令字段类型的字段
Require fields from a directive field type
参考这个例子:http://jsbin.com/cenugiziju/edit?html,js,output
我创建了一个指令:example-directive
这个指令由一个 templateUrl 组成,它有一个标签和一个在这个 html 文件中的输入。此字段在 vm.formFields
.
中标记为 required
如果您向下看一下“表单”部分,您会注意到 $valid
已设置为 true
,即使未填充必需的指令。我本来希望这是 false
.
有没有办法让 Formly 需要从自定义指令中引入的字段,该指令上有字段?
还行
抱歉混淆和延迟。
我已经创建了您正在寻找的答案。
因为您正在输入一个指令,所以您实际上需要将选项与您需要的值一起发送到该指令......
这是工作示例...这意味着尽管您需要自己处理所有验证等,因为您不是通过 FormalyJS 而是在您自己的指令中生成元素。(确保没有其他方法可以做到这一点。 ..)
这是更正后的代码,要求/最大长度/最小长度:
我实际上做的是将 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 中模板的补充
模板:''
所以现在当你想添加一个字段时,你需要将数据传递给指令并在指令中添加相应的代码......
我对 Formly 不是很熟悉,但这是我可以给你的解决方案
注意:
我将选项项传递给指令,因为这就是 FormalyJS 构造它的方式……您始终可以使用自己的……但由于它在 formly 指令之后呈现,所以我认为它会更容易
编辑
这是更新后的 JSBIN
你可以看到我必须将 ngModel 添加到指令中......你也可以通过 require 来完成然后使用它,我更喜欢这样做......但你必须将它传递给div 定义指令...
检查更新的代码
参考这个例子:http://jsbin.com/cenugiziju/edit?html,js,output
我创建了一个指令:example-directive
这个指令由一个 templateUrl 组成,它有一个标签和一个在这个 html 文件中的输入。此字段在 vm.formFields
.
required
如果您向下看一下“表单”部分,您会注意到 $valid
已设置为 true
,即使未填充必需的指令。我本来希望这是 false
.
有没有办法让 Formly 需要从自定义指令中引入的字段,该指令上有字段?
还行 抱歉混淆和延迟。 我已经创建了您正在寻找的答案。 因为您正在输入一个指令,所以您实际上需要将选项与您需要的值一起发送到该指令...... 这是工作示例...这意味着尽管您需要自己处理所有验证等,因为您不是通过 FormalyJS 而是在您自己的指令中生成元素。(确保没有其他方法可以做到这一点。 ..)
这是更正后的代码,要求/最大长度/最小长度:
我实际上做的是将 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 中模板的补充 模板:''
所以现在当你想添加一个字段时,你需要将数据传递给指令并在指令中添加相应的代码...... 我对 Formly 不是很熟悉,但这是我可以给你的解决方案
注意: 我将选项项传递给指令,因为这就是 FormalyJS 构造它的方式……您始终可以使用自己的……但由于它在 formly 指令之后呈现,所以我认为它会更容易
编辑
这是更新后的 JSBIN
你可以看到我必须将 ngModel 添加到指令中......你也可以通过 require 来完成然后使用它,我更喜欢这样做......但你必须将它传递给div 定义指令... 检查更新的代码