Search code examples
angularjsangularjs-scopeangularjs-ng-repeat

AngularJS - Can I use data binding value depending on ternary operator


I have an ng-repeat li elements and I want to set a specific value for that li depending on whether a function returns true or false and I don't want to do it in the controller because I have dependency issues where it makes it Minimize or Maximize for ALL li elements but I want it to be for each individual li element. I tried using several things including the following without any luck. I am not sure what I am doing wrong but I would appreciate any input or any other way of doing this.

object1 is from an ng-repeat that includes this li element.

<li><a tabindex="-1" ng-click="setHidden(object1)">{isItHidden(object1) ? 'Minimize' : 'Maximize'}</a></li>

SOLUTION (thanks to jdp)

<li><a tabindex="-1" ng-click="setHidden(object1)">{{isItHidden(object1)}}</a></li>

$scope.isItHidden = function(object){
    return object.hidden ? 'Maximize' : 'Minimize';
}

Solution

  • You can do this

    {{ object1.hidden && 'Minimize' || 'Maximize' }}
    

    In angular 1.2 a real ternary operator will be added.