我试图找到我的问题的答案,但没有任何帮助我。我需要的是一个快捷方式,如果在没有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')
}
它不起作用。有任何想法吗?我希望这是可能的。
答案 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');
}