0

Я попытался найти ответ на свой вопрос, но мне ничего не помогло. Мне нужна ярлык, если внутри ng-click без выражения else, просто с условием if и что произойдет, если это условие истинно. Таким образом, как правило, можно было бы написать ярлык, если так:Ярлык, если внутри ng-click без других

ng-click="ctrl.isBoolean ? 'yes' : 'no'" так же, как:

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

Но теперь я просто нужно, если состояние и часть того, что произойдет, если это правда. Я попытался это:

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

Я думал, что это может быть похоже на это, потому что это один можно:

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

Это не сработало. Есть идеи? Надеюсь, это возможно.

+0

Попробуйте 'void()' function, 'ng-click =" ctrl.isBoolean? 'Yes': void (0) "' – Harish

ответ

1

Вот некоторые решения, я надеюсь, что один будет соответствовать вашим потребностям:

1) Создать эту функцию в контроллере. Он проверит bool и выполнит func, если 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"

Он использует тройной оператор, и synthax ясно: если isBoolean == true, вы будете выполнять yourAction(), еще ничего.


4)ng-click="{{check(ctrl.isBoolean)}}" и в контроллере:

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

На мой взгляд, это "Angularest" путь, но вы не будете иметь ярлык, как вы хотели. ..

+1

Привет там и спасибо - nr. 3 работал отлично! Приветствия :) – MrBuggy

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>

+0

Не работает действительно ... но в любом случае спасибо :) – MrBuggy

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'); 
} 
+0

Спасибо за ответ, но мне нужно, чтобы как сделать ярлык, если без выражения else или информации, если это возможно или нет ... Позаботьтесь о вопросе, я знаю похожие обходные пути, но мой вопрос достаточно ясен ... – MrBuggy

Смежные вопросы