2016-01-18 81 views
1

,當我需要清除所有字段時,它們被隱藏hideExpression,現在我有一些代碼,增加了一個守望者,以田,並清除他們,如果他們是隱藏的。結算FIELDGROUP的領域隱藏

問題是,這不適用於hideExpressionfieldGroup的字段上使用,因爲它顯然不允許將監視器添加到該類型。

我的例子可能explaine問題更好: http://jsbin.com/fodijeziyu/1/edit?js,output

如果您填入值,然後單擊隱藏複選框,就應該清除上獲取隱藏領域的模型/視圖。

回答

0

你可以用手錶以及真正的標誌,與您hideExpression結合:

$scope.$watch('someMiscForm', function() { 
    console.log('The model has changed!'); 
}, true); 

然後改變/重置你感興趣的領域

+0

正如我看到它,那不會工作。當fieldGroup被隱藏時,我不會觸發觀察者。 –

1

總體上的角,我覺得不同的方式做事情,這樣我就不會使用觀察者。它會降低性能(有時可能意味着使用jQuery)。

現在對於角formly一個做你想要將使用功能hideExpression和實現你想要的東西的方式。

這裏是一個working example

官方角formly文檔上同樣閱讀本link

+0

在這個例子中有一些輸入字段,這可能是一個好方法,但問題是我需要這個龐大而複雜的表單。所以我不能在任何地方設置那種hideExpression。我需要更通用的東西 –

1
+0

如果我在該示例中添加一個fieldGroup,它會拋出一個''RangeError:最大調用堆棧大小超過「',你可以舉一個fieldGroup的例子嗎? –

+0

[這](https://jsbin.com/nazamo/edit?js,console,output)是我得到之前,我意識到'fieldGroup'不支持'watcher' ... PR接受: - )你需要調整[這一行](https://github.com/formly-js/angular-formly/blob/master/src/directives/formly-form.js#L270-L272)並添加'watcher (https://github.com/formly-js/angular-formly/blob/master/src/providers/formlyApiCheck.js#L175-L190)(可能通過解壓[this](https:// github.com/formly-js/angular-formly/blob/master/src/providers/formlyApiCheck.js#L116-L121)複製到一個變量並重用它)。 – kentcdodds

+0

PR:https://github.com/formly-js/angular-formly/pull/610 –