【问题标题】:Controller stops updating value after the value is changed更改值后控制器停止更新值
【发布时间】:2016-02-05 20:46:03
【问题描述】:

我正在尝试在用户输入数据时使用 angular 来更改元素的 css 类,无论是在单击按钮后还是在用户输入数据时实时更改。

HTML:

<input type="text" class="defaultClass" ng-class="{true: 'errorClass',
false:'defaultClass'}[updateInput()]" ng-model="inputOne">

CSS:

.defaultClass {border: 1px solid #ccc;}

.errorClass {border: 1px solid #FF0000;}

按下按钮后,控制器会检查元素的模型是否为空,如果是,则使函数返回 true,从而更改 ng-class 中的 css 类以显示错误。

$scope.calcButton = function (){

if ($scope.inputOne === "" || $scope.inputOne === undefined) {
    $scope.updateInput = function() {
        return true;
    };
} else {
    $scope.updateInput = function() {
        return false;
    };
}

};

在按钮单击功能之外,我在同一控制器中有以下代码应该监视 $scope.inputOne 的状态并根据输入的状态返回 true 或 false:

$scope.updateInput = function() {
    if ($scope.inputOne === "") {
        return true;
    } else {
        return false;
    }
 };

只要我不点击按钮,它就可以正常工作,但是一旦按下按钮更改了值,控制器就会停止检查输入字段是空的还是填充的。

这是一个问题,因为我希望在按下引发错误的按钮后用户键入数据时错误消息消失,但此时我无法通过用户输入更改 css。

为什么要这样做?如何确保控制器在单击按钮后仍跟踪输入字段中发生的情况?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    这样试试

    ng-class="{'errorClass' : !inputOne,'defaultClass': inputOne }" 
    

    或者像这样

    ng-class="!inputOne ? 'errorClass' : 'defaultClass'" 
    

    '',null,NaN,undefined,0 等在 JavaScript 中被视为 false

    只需检查模型是否有价值。

    它将通过两种方式绑定工作。不需要方法来检查

    【讨论】:

    • 它可以工作,但也会产生另一个问题,因为默认情况下会显示错误。我之前在方法中使用它的原因是因为我只希望它在发生更改后开始检查错误。
    • @Tater 然后使用ng-class="{'errorClass' : inputOne=='' ,'defaultClass': inputOne }"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2016-04-27
    • 2012-09-19
    • 1970-01-01
    • 2022-08-05
    相关资源
    最近更新 更多