在
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 ; } } ]; });