Angularjs 角度:如果ng/ng显示不';当值更改时,无法再次进行计算

Angularjs 角度:如果ng/ng显示不';当值更改时,无法再次进行计算,angularjs,Angularjs,我的Angular应用程序有一个简单的控制器和一个模板。该模板有三个文本输入。我想根据设置(或不设置)的所有三个值显示/隐藏。现在我所经历的是: 如果我使用控制器函数来检查值,比如 ng-if="myCtrl.checkValues()" 控制器中的功能定义为 vm.checkValues = checkValues; function checkValues() { return vm.inputVal1 !== '' && vm.inputVal2 !== ''

我的Angular应用程序有一个简单的控制器和一个模板。该模板有三个文本输入。我想根据设置(或不设置)的所有三个值显示/隐藏。现在我所经历的是:

如果我使用控制器函数来检查值,比如

ng-if="myCtrl.checkValues()"
控制器中的功能定义为

vm.checkValues = checkValues;

function checkValues() {
     return vm.inputVal1 !== '' && vm.inputVal2 !== '' && vm.inputVal3 !== '';
}

然后,我希望每次通过在输入字段中输入内容更新一个或多个值时都会对其进行评估。但它不起作用。仅当我不使用函数检查值,而是直接在ng if中使用函数代码行时,它才起作用。似乎函数没有在每次检查值更改时更新,是这样吗?还是我遗漏了什么?

请尝试返回以下表达式:

$scope.checkValues = function() {
    return ($scope.input1 && $scope.input2 && $scope.input3);
  }

这是一个适合您的解决方案

如果我正确地得到了您想要的,那么您需要基于3个输入显示/隐藏某些元素,并且每当文本框发生更改时,您都需要更新隐藏/显示元素

您可以使用ng change和ng show实现这一点,下面是一个未经测试的示例,但我希望它能帮助您并为您提供一个想法:

<input type="text" ng-model="text1" ng-change="checkValues()/>
<input type="text" ng-model="text2" ng-change="checkValues()/>
<input type="text" ng-model="text3" ng-change="checkValues()"/>

<label ng-show="checkValues()">Test</label>

$scope.checkValues = function() {
    return $scope.text1 !== '' && $scope.text2 !== '' && $scope.text3 !== '';
}

试验
$scope.checkValues=函数(){
返回$scope.text1!=''&&$scope.text2!=''&&&$scope.text3!='';
}

您的支票中缺少第二张
&&
。。。不确定是什么
vm.inputVal2!=''vm.inputVal3!=''正在执行…抱歉,这只是一个输入错误,不是我代码中的实际错误。;-)我建议对这些值使用一个观察者,并根据基本相同的代码执行if验证,只是没有首选的ControllerAs语法。。。奇怪的是,它能与之协同工作。哦,谢谢!事实上,我不需要零钱。奇怪的是,在我的生产代码中,它不像这里那样工作…@Vortilion在您的生产代码中,您正在执行
ctrl.checkValues
而不是
scope.checkValues
是吗?这是正确的,因为我使用ControllerAs语法,正如我所写的。