Angular formly - 在templateOptions变量上设置观察者

时间:2016-02-23 12:27:55

标签: javascript html angularjs angular-formly

我想设置一个观察者,当templateOptions中的特定值发生变化时,该观察者将为该字段运行一个函数。当您想知道输入已被更改时,可以使用正常的形式观察器,因此在我的情况下不起作用。我已经尝试过expressionProperties,但是我无法让它工作。

我以js Bin为例。 将鼠标悬停在一个字段上时,有两个输入字段templateOptions.mouseOver变为true,鼠标离开时,mouseOver布尔值变为false。我该怎么办才能运行mouseOver更改函数?

1 个答案:

答案 0 :(得分:0)

如果要为每个单独的字段执行操作,您只需将控制器放在字段上,或者如果在指定要运行的函数后,如果每个字段的函数相同,则可以将其放在模板中NG-鼠标悬停。像这样:

formlyConfigProvider.setWrapper([

      {
        template: [
                    'editorEnabled: {{to.editorEnabled}}',
                    '<div ng-mouseover="to.editorEnabled=true; Update()" ng-mouseleave="to.editorEnabled=false; Update()">',
                        '<formly-transclude></formly-transclude>',
                    '</div>'
                ].join(' '),
        controller: function($scope) {
           $scope.Update = function() {
              //Code to run when value changes
           }
        }
      }
    ]);

如果您在每个单独的字段中执行此操作(如果您要调用的函数对于每个字段将会有所不同),您可以这样做:

vm.fields = [
      {
        key: 'textField1',
        type: 'input',
        templateOptions: {
          label: 'Input1',
          type: 'text',
          value:vm.model.textField1,
          editorEnabled: false
        },
        controller: function($scope) {
          $scope.Run = function() {
             alert('Changed!');
          }
        }
      },