快捷方式如果在 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" 方式,但您不会有想要的捷径...
我试图找到问题的答案,但没有任何帮助。我需要的是一个快捷方式 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
.
$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" 方式,但您不会有想要的捷径...