首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS -当触发器变量在作用域中更改时,我的错误消息不会更新吗?

AngularJS -当触发器变量在作用域中更改时,我的错误消息不会更新吗?
EN

Stack Overflow用户
提问于 2016-09-21 13:14:53
回答 2查看 29关注 0票数 0

我是Angular的新手,所以这可能是一个非常简单的问题,有一个非常明显的答案,但我无法通过阅读类似的文章来解决它,所以我想我应该在这里提问。

基本上,我有一个文本输入字段,我试图根据它是否包含任何内容来实时显示/消失错误消息(我还有其他具有不同错误消息的字段,这些错误消息将根据不同的标准显示/消失,所以仅将其设置为必填字段作为快速修复将不适用于其他目的)

据我所知,当我输入或删除文本时,触发器变量正在完全更新,但错误消息本身显然没有得到备忘录,只是保持原样。

这是我到目前为止的一个精简版本

查看:

代码语言:javascript
复制
<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>  

控制器:

代码语言:javascript
复制
'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);
        });

    }]);
};

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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来帮助实现这一点。

票数 1
EN

Stack Overflow用户

发布于 2016-09-21 13:29:25

由于ng模式指向对象riskAssessmentTable.name,因此您必须在控制器中预定义riskAssessmentTable。尝试下面的代码。

代码语言:javascript
复制
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);
        });

    }]);
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39608049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档