Motivation
Sometimes we need to have a hyperlink with an address bound to the value of a certain dynamic variable (an observable).
For example, suppose you are making a website for an artist: www.great-artist.com. This website has a gallery for each year available on www.great-artist.com/gallery/YYYY/
Example 1
Let us create an observable:
JavaScript
var addr1=new DB.observable([],{type:"str",
value:"http://www.great-artist.com/gallery/2010/"});
where addr1 is a string-valued observable.
On the web page we write:
HTML
<a db="attr:href:addr1">Link to the paintings depicted during the specified year</a>
Now after our web page loads DB.js and activates it, this link will point to the paintings created in 2010.
Example 2
To complicate the previous example, let us this time create two observables:
JavaScript
var year2=new DB.observable([],{type:"int",value:2010}),
addr2=new DB.observable([year2],{type:"str",
compute:()=>"http://www.great-artist.com/gallery/"+year2()+"/"});
where we defined 2 observables:
- integer-valued
year2 with the initial value 2010, and
- string-valued
addr2 derived from year2.
Let us use addr2 to set the link address, and year2 – to update its text:
HTML
<a db="attr:href:addr2">Link to the paintings created
in <span db="text:year2"></span></a>
At this point we could open debugger console in the browser and evaluate
Instead of the debugger console, one can use add input element to our web page bound to year2:
HTML
<label>Choose the year:
<input type="number" min="2005" max="2015" db="value:year2">
</label>
In this way we have bound input element to a (http link) via two observables: year2 and addr2.