如果在ng-click内没有其他的快捷方式

时间:2016-12-14 08:24:55

标签: javascript html angularjs if-statement angularjs-ng-click

我试图找到我的问题的答案,但没有任何帮助我。我需要的是一个快捷方式,如果在没有else表达式的ng-click中,只有if条件,如果这个条件为真,会发生什么。所以通常你会写一个快捷方式,如下所示:

ng-click="ctrl.isBoolean ? 'yes' : 'no'"与:

相同
if(isBoolean) {
    alert('yes');
} else {
    alert('no');
}

但现在我只需要if条件和部分发生的事情,如果它是真的。我试过这个:

ng-click="ctrl.isBoolean ? 'yes'"

我认为这可能类似于此,因为这可能是:

if(isBoolean) {
    alert('yes')
}

它不起作用。有任何想法吗?我希望这是可能的。

3 个答案:

答案 0 :(得分:1)

以下是一些解决方案,我希望能满足您的需求:

1)在您的控制器中创建此功能。它将验证布尔,并在true时执行 func

$scope.if = function(bool, func) {
   if(bool) func();
};

您可以将其用作HTML中的快捷方式:{{if(myBool, myAction)}}

我为此解决方案创建了 demo Fiddle

2) ng-click="ctrl.isBoolean && yourAction()"

如果满足您的条件,它将执行yourAction()

3) ng-click="ctrl.isBoolean ? yourAction() : null"

它使用三元运算符,而synthax是明确的:如果isBoolean == true,您将执行yourAction(),否则不执行任何操作。

4) ng-click="{{check(ctrl.isBoolean)}}"并在您的控制器中:

$scope.check = function(toCheck) {
    if(toCheck) yourAction();
}

在我看来,这是" Angularest"方式,但你没有按照自己的意愿获得快捷方式......

答案 1 :(得分:0)

ng-click=" ctrl.isBoolean &&  showAlert('yes')"

您可以尝试这样

'use strict';
angular.module('demoApp',[
 
 
])

  
// Home controller
.controller('AppCtrl', ['$scope',function($scope) {

 

$scope.ctrl = {
  isBoolean : true
}

$scope.showAlert = function(msg){
alert(msg);
};


}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="demoApp"  ng-controller="AppCtrl">
<button type="button" ng-click=" ctrl.isBoolean &&  showAlert('yes')">
Click here
</button>
  </div>

答案 2 :(得分:0)

我认为你应该制作2个元素,使用ng-show

 <button ng-show="ctrl.isBoolean === 'yes'" ng-click="ctrl.Boolean('yes')>Boolean</button>
 <button ng-show="ctrl.isBoolean === 'no'" ng-click="ctrl.Boolean('no')>Boolean</button>

然后在你的控制器上:

$scope.Boolean = function(val) {
   $scope.isBoolean = val;
   $scope.isBoolean === 'yes' ? alert('yes') : alert('no');
}