ok 對於混音和延遲感到抱歉。 我已經創建了你正在尋找的答案。 ,因爲你輸入了一個指令,你實際上需要用你需要的值把選項發送給那個指令...... 這是一個工作的例子......這意味着儘管你自己需要處理所有的驗證等等,你是不是產生通過FormalyJS但在自己的指令中的元素(請確保沒有其他的方式來做到這一點...)
這是糾正代碼所需/最大長度/ 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 模板的模板:「」
所以現在,當你想添加一個字段,您需要將數據傳遞給指令,並在指令添加相應的代碼... 我不是巨大熟悉Formly,但是這是我可以給你
注意解決方案:我通過選擇項目 的指令,因爲這是FormalyJS如何構造它。 ...你可以隨時使用你自己的...但因爲它呈現後formly指令,想通它會更容易
編輯
這裏是一個更新的JSBIN
你可以看到,我不得不添加到該指令ngModel ......你也可以做到這一點通過需要然後使用它,我喜歡這樣做...但你必須將它傳遞給定義指令的div ... 結帳更新的代碼
當您設置不需要的字段時或不需要該項目...你需要告訴它何時需要... like require:'^ ngModel'或require:'^ form',這允許你在指令中的鏈接函數中使用它... https://docs.angularjs.org/guide/directive,你需要根據需要設置字段... ps您的示例有點麻煩... formmaly-form指令在哪裏? –
我會看看你的鏈接的東西。謝啦。 formly-form指令來自html字段中包含的formly.js腳本。 – Holt
@ Jony-Y這是否需要:'^ ngModel'進入指令本身?它需要的東西是主頁上的控制器嗎?或主頁面上的表單(在這種情況下是'vm.formName')? '鏈接'設置兩個項目如何相互溝通? – Holt