3

比方说,我们有一个像这样的对象:

$scope.company = { name: { de: '', en: '' } };

和一个输入字段说:

<input type="text" ng-model="company.name[currentLanguage]" />
<button ng-click="currentLanguage='de'">Deutsch</button>
<button ng-click="currentLanguage='en'">English</button>

如果用户填写此字段,则该字段接收ng-valid类。如果用户随后更改语言(实际上是$scope.currentLanguage),则输入字段会正确更新(变为空),但它仍然具有ng-valid类,这是错误的。预期的行为将是ng-pristine。如何实时更新?

很高兴知道这一点。干杯

PS。没有更多的代码了。就是这样。PS2。这是您在重复线程中建议的另一个问题。我不使用 ng-repeat。

4

1 回答 1

2

一旦输入的值以任何方式更改,除非您强制它,否则它不会重置为ng-pristine 。

您可以像这样管理控制器中的类:

$scope.currentLanguage = 'de';
$scope.company = { name: { de: '', en: '' } };

$scope.setCurrentLanguage = function(str) {
$scope.currentLanguage = str;
var input = angular.element(document).find('input')[0];
if ($scope.company.name[str] == '') {
    angular.element(input).removeClass('ng-dirty');
    angular.element(input).removeClass('ng-invalid');
    angular.element(input).addClass('ng-pristine');
} else {
    angular.element(input).removeClass('ng-pristine');
    angular.element(input).addClass('ng-dirty');
}
}

在html中:

<input type="text" ng-model="company.name[currentLanguage]" />
<button ng-click="setCurrentLanguage('de')">Deutsch</button>
<button ng-click="setCurrentLanguage('en')">English</button>
于 2013-06-30T23:21:53.360 回答