2017-03-09 88 views
0

我想在formly onBlur事件上执行一些计算,之后想要隐藏并显示下一个单选按钮字段。角形formly onblur计算和隐藏/显示字段错误

当我调试一切看起来不错,但在用户界面我无法看到正确的行为。

首先是文本输入,第二个字段是收音机,我也想动态设置标签。

我错过了什么吗?任何其他方式来设置?

fields [ 
    { 
     "type": "moneyInput", 
     "key": "amtRcv", 
     "id" : "amtRcv", 
     "templateOptions": { 
     required: true, 
      label:"", 
      onBlur: function calcAmount($viewValue, $modelValue, scope) { 

      var recvAmt = $viewValue; 

      if(recvAmt) 
      { 
       var missingAmount = service.amnt - recvAmt; 
//here trying to set the hide and label for radio field. It is getting set but not working as expected 
       fields[1].hideExpression = "false"; 
       fields[1].templateOptions.label = 'So, is $' + missingAmount + ' is missing? '; 

      } else { 
       fiedls[1].hideExpression = "true"; 

      } 
      } 
     } 
     }, 
     { 
     "type": "radioInput", 
     "key": "amnt", 
     "id" : "amnt", 
     "wrapper" : "requiredField", 
     "templateOptions": { 
      required: true, 
      label:"", 
      "options": [ 
      { 
       "name": "Yes", 
       "value": true 
      }, 
      { 
       "name": "No", 
       "value": false 
      } 
      ] 
     } 
     } 
] 
+0

最好先修改代码缩进 – blackmiaool

+0

对不起,已更正。 – user2836364

回答

0

最简单的方法是简单地设置一个模型标志,并检查下一组反对单选按钮的hideExpression。

例如,在的onblur功能,你会做这样的事情:

$scope.model.hideRadioBtn = true; 

然后在radioInput领域,你会因为这个值被设置hideExpression设置为

hideExpression: 'model.hideRadioBtn' 

然后尽快为真,它会隐藏该字段。我发现这通常是最简单的方法来完成这个没有一堆额外的代码。我们在工作中使用了这一点,并且一直运行良好。