41

I want to set a bootstrap css class to a span with if condition (up to the binded value). I have isApproved field in a list, I want to see the field with 'label-success' class when its active and 'label-important' class when its inactive

I added this line, but all the time it's taking the first class

data-bind="
    text: isApproved,
    css: isApproved = 'true' ? 'label label-important' : 'label label-important'"

Is it possible in the html or I should add a computed field on my VM?

1
  • Can you add the code you're working with? JS & HTML? Preferably in a jsfiddle or something. Commented Jul 31, 2013 at 12:24

2 Answers 2

69

If I understood you right, this is the binding you are looking for.

 data-bind="text: isApproved, css: {
    'label' :  true,
    'label-success' :  isApproved(),
    'label-important':  !isApproved()
 }"

I hope it helps.

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

1 Comment

Thanks , I didn't pay attention to the () with the isApproved property
48

Ternary operator example

<span class="label"
    data-bind="text: isApproved,
               css: isApproved() == true ? 'label-success' : 'label-important'">
</span>

4 Comments

Thanks , I didn't pay attention to the () with the isApproved property
This is a more elegant solution. Congrats.
Important to use this solution: in my case, the isApproved() function is expensive and should not be evaluated more than absolutely necessary
will it work runtime ? like play/pause button toggle ?

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.