If your vhost is only bound to port 8080, then going to http://subdomain.example.com/ will not load the site from the apache server. You need to explicitly us http://subdomain.example.com:8080/ Since it is working from localhost, that implies that apache is only listening on localhost and the subdomain resolves to some other IP.
When you start up apache and there is no DNS record at all, Apache will generate a warning (this is from 2.4, but older versions should be similar):[Wed Oct 09 21:24:53.955601 2013] [core:error] [pid 58704:tid 400] (OS 11001)No such host is known. : AH00547: Could not resolve host name SUBDOMAIN.EXAMPLE.COM -- ignoring!
If it does not generate an error, have a look at where SUBDOMAIN.EXAMPLE.COM goes: Open a command prompt and type ping subdomain.example.com. (Depending on your DNS server, you might need to include the trailing period. You could use nslookup, but it does not show results from the hosts file.) If the host can be resolved, ping will give you an IP address. Make sure that it is the IP address of your computer (or 127.0.0.1)
If it is not 127.0.0.1, you need to make sure apache is listening to that IP.The easiest way to do that is netstat -an . In that output there should be at least one listing for port 8080. Make sure there is either one for every IP you use or one for 0.0.0.0:8080.
If not, you might need to add another Listen directive with each IP you want to listen on. Also, check the Apache error log and system log for errors in binding ports (Apache would not start at all if there was a conflict, but a small configuration issue could be warned about.)