angularjs – 从Formly表达式访问控制器的范围

前端之家收集整理的这篇文章主要介绍了angularjs – 从Formly表达式访问控制器的范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Formly’s expressions中访问控制器范围(即$scope)的正确方法是什么?

我的用例:

我有一个属性,例如$scope.showEmailField = false我希望在此属性设置为false时隐藏我的Formly字段.我试过使用hideExpression:’showEmailField’,但看起来Formly创建了它自己的子范围.我找到的唯一方法是使用$parent.showEmailField表达式,但这不是一个好习惯,并且没有正确跟踪表达式.我不得不将showEmailField移动到模型对象并使用以下表达式:model.showEmailField.这工作正常,但它有点丑陋的解决方法.

我已多次重读有关表达式,字段配置和其他内容的文档,但我无法理解所有这些上下文和范围如何与Formly一起使用的概念.也许我们需要一个关于这个主题的好的解释性文章

解决方法

我相信你的问题的最佳解决方案是使用hideExpression的匿名函数,如下所示:

app.controller('MainCtrl',function MainCtrl($scope) {
        var vm = this;          
        $scope.showEmailField = false;        
        vm.fields = [      
          {
            key: 'email',type: 'input',templateOptions: {
            type: 'email',label: 'email',},hideExpression: function(){         
              return $scope.showEmailField ;          
            }
          }
        ];
    });

有关更多细节,您可以在角度形式文档中阅读this link.大多数形式字段配置接受函数参数来处理一些其他表达式.

猜你在找的Angularjs相关文章