4

I have a class

.haba-haba{
border:1px solid red;
height:50%;
width:50%;
}

I am storing the class name in scope variable in my controller using

$scope.className = "haba-haba";

How can I assign $scope.className to my div as a class?

I tried doing <div ng-class="'{{className:true}}'"></div> It didn't work.

Anyone can tell me a solution? thanks in advance!

1
  • I don't think that storing $scope.className = "haba-haba"; is a good idea. Which class to use is view's concern, not model's concern. You should hard-code the classes in view and based on the conditions to apply classes accordingly. Commented Feb 28, 2014 at 13:41

2 Answers 2

4

The syntax for the ngClass directive is this:

ng-class="{'haba-haba': thruthValue}"

where

$scope.thruthValue = true;

You can obviously replace true with false or a function that returns true or false.

Another usage is this:

ng-class="getTheClass()"

where

$scope.getTheClass = function() {
    return 'haba-haba';
}

Here's a working fiddle of the second usage.

Also, as other people have pointed out, the second usage is totally against sane MVC. Don't use it unless you know what you are doing.

Sign up to request clarification or add additional context in comments.

4 Comments

Could you please post your code? What's not working? Does it throw any exceptions? Check your dev console.
problem is that this function is not called.
@SergiuParaschiv is that a valid code? 'ng-class="getTheClass()"' ??
But where is ng-class used in this example?
-1

Actually, what you should do with ng-class is create a boolean variable and attach it to the ng-class attribute - when this boolean is true - the div has that class:

$scope.toggleClass = false;

ng-class="{'haba-haba' : toggleClass}"

Now when you set toggleClass to true - your div gets haba-haba added.

5 Comments

This can not be the answer.
@AdityaPonkshe -- Care to explain?
@tymeJY OP wants to use value stored in scope, to use as a class, not by setting flags
@AdityaPonkshe -- Not a very smart way to do it IMO - the point of markup like ng-class is to know exactly what is happening in the view in a clean way. Having your class name stored in a variable and using said variable in the markup creates confusion.
that maybe true but if OP wants to do it his way we should provide exact solution, you can still provide alternate solution but should mention why, in the answer, like u did in a comment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.