Angular:当值发生变化时,ng-if / ng-show中的控制器功能不再被评估

时间:2017-02-09 14:23:28

标签: angularjs

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

如果我使用控制器功能检查值,例如

ng-if="myCtrl.checkValues()"

并且控制器中的功能定义为

vm.checkValues = checkValues;

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

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

2 个答案:

答案 0 :(得分:2)

尝试返回此表达式:

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

这是一个适合你的plunker

答案 1 :(得分:0)

如果我得到了你想要的东西,你想根据3个输入显示/隐藏一些元素,每当文本框改变时你想要更新hide / show元素。

你可以使用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 !== '';
}