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

Shortcut if within ng-click without else

我试图找到问题的答案,但没有任何帮助。我需要的是一个快捷方式 if 在没有 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')
}

没用。有任何想法吗?我希望这是可能的。

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 个元素,使用 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');
}

这里有一些解决方案,希望有一个能满足您的需求:

1) 在你的控制器中创建这个函数。它将验证 bool,如果 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"

使用三元运算符,语法清晰:如果isBoolean == true,则执行yourAction(),否则不执行。


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

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

在我看来,这是 "Angularest" 方式,但您不会有想要的捷径...