Make sure to look at the documentation for text.
To set the text directly, you just call the text
method of the entity. So whenever the base property changes, you could do this -- either by calling the method directly, or setting up an "UpdateHealth" event.
So, a text component might look like this:
Crafty.e('2D, DOM, Text')
.attr({ x: 200, y: 150 })
.text(Nums[0]);
.bind("UpdatePlayerHealth", function(health){this.text(health)});
And then when the player took damage, it would trigger that event with code that looks something like this:
Crafty.trigger("UpdatePlayerHealth", this.health);
The advantage of using events like this is that you don't need to carry around a reference to the text object, and you could modify other aspects of the game when a player's health changed.
If you wanted, you could pass more info in the event by using an object, such as:
Crafty.trigger("UpdatePlayerHealth", {health: this.health, damage: damageValue});
(Although of course you'd also need to adjust the bound function on the text display, since it would be passed an object rather than just a number.)