AngularJS ng-disabled directive with expression is not working

The ng-disabled expression is evaluated in the present scope. Hence, you should only need the following without any extra interpolation with {{..}}:

    <input type="submit" 
           value="Register" 
           ng-show="isNewUser" 
           ng-disabled="!hasAcceptedTnC(tnc)">

Note that I added a ! since you probably want the button disabled if the user has not accepted the TnC.

Working demo: http://plnkr.co/edit/95UiO4Rd2IMh8T1KjSQK?p=preview


A comment was posted below asking how to reason about when to use {{...}} and when to use bare expression with a given ng-* directive. Unfortunately, there is no syntactical clue hidden in the directives which can reveal that information. Looking at the documentation will turn out to be fastest way to find out this information.

Leave a Comment