我是Angular的新手,所以这可能是一个非常简单的问题,有一个非常明显的答案,但我无法通过阅读类似的文章来解决它,所以我想我应该在这里提问。
基本上,我有一个文本输入字段,我试图根据它是否包含任何内容来实时显示/消失错误消息(我还有其他具有不同错误消息的字段,这些错误消息将根据不同的标准显示/消失,所以仅将其设置为必填字段作为快速修复将不适用于其他目的)
据我所知,当我输入或删除文本时,触发器变量正在完全更新,但错误消息本身显然没有得到备忘录,只是保持原样。
这是我到目前为止的一个精简版本
查看:
<div class="col-sm-12">
<form class="form-horizontal" autocomplete="off" name="createRiskAssessmentForm">
<div class="form-group">
<label for="inputRiskNameId" class="col-sm-2">Name:</label>
<div class="col-sm-6">
<input id="inputRiskNameId" class="form-control" type="text" ng-model="riskAssessmentTable.name" name="riskNameField">
<div ng-hide="$scope.nameFieldHasContent" class="alert alert-danger">This field is required!</div>
</div>
</div>
</form>
</div> 控制器:
'use strict'
module.exports = function (module) {
module.controller('CreateRiskAssessmentTableController', ['$scope', '$rootScope', function($scope, $rootScope) {
$scope.$watch('riskAssessmentTable.name', function(name) {
if (name == '') {
$scope.nameFieldHasContent = false;
}
else {
$scope.nameFieldHasContent = true;
}
console.log('Name field has content?: ' + $scope.nameFieldHasContent);
});
}]);
};我做错了什么?
发布于 2016-09-21 13:27:29
我不认为这行是正确的:
<div ng-hide="$scope.nameFieldHasContent" class="alert alert-danger">This field is required!</div>
删除“$scope”。有关ng-hide的部分,将其更改为:
<div ng-hide="nameFieldHasContent" class="alert alert-danger">This field is required!</div>
您还可以查看angular指令ng-脏和ng-valid来帮助实现这一点。
发布于 2016-09-21 13:29:25
由于ng模式指向对象riskAssessmentTable.name,因此您必须在控制器中预定义riskAssessmentTable。尝试下面的代码。
module.exports = function (module) {
module.controller('CreateRiskAssessmentTableController', ['$scope', '$rootScope', function($scope, $rootScope) {
$scope.riskAssessmentTable = {};
$scope.$watch('riskAssessmentTable.name', function(name) {
if (name == '') {
$scope.nameFieldHasContent = false;
}
else {
$scope.nameFieldHasContent = true;
}
console.log('Name field has content?: ' + $scope.nameFieldHasContent);
});
}]);
};https://stackoverflow.com/questions/39608049
复制相似问题