AngularJS Example:
HTML
<div ng-app="control_group">
<div ng-controller="Controller1">
<form name="myListOfNames">
<div class="control-group" id="control-group-title">
<label class="control-label" for="title">Title</label>
<div class="controls">
<input type="text" id="title" name="title" required ng-model="title">
</div>
<div class="help-inline" ng-show="myListOfNames.title.$error.required == true">
Required.
</div>
</div>
<div ng-repeat="person in persons">
<div>Person {{$index}} - {{person.first_name}} {{person.last_name}} ({{person.birthday}})</div>
</div>
<div ng-repeat="person in persons">
<controlgroupr ng-model="person" required="required" display="First name" field="first_name"></controlgroupr>
<controlgroup ng-model="person" display="Last name" field="last_name"></controlgroup>
<controlgroupr ng-model="person" required="required" display="Birthday" validate="date" field="birthday"></controlgroupr>
<controlgroup ng-model="person" display="Birthday" validate="date" field="birthday"></controlgroup>
</div>
</form>
</div>
</div>
CSS
</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ -->
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<script src="http://code.angularjs.org/angular-1.0.0rc10.min.js"></script>
<script src="http://code.angularjs.org/angular-resource-1.0.0rc10.min.js"></script>
<style>
JavaScript
//UUID/Guid Generator
// use: UUID.create() or UUID.createSequential()
// convenience: UUID.empty, UUID.tryParse(string)
(function(w) {
// From http://baagoe.com/en/RandomMusings/javascript/
// Johannes Baagøe <[email protected]>, 2010
function Mash() {
var n = 0xefc8249d;
var mash = function(data) {
data = data.toString();
for (var i = 0; i < data.length; i++) {
n += data.charCodeAt(i);
var h = 0.02519603282416938 * n;
n = h >>> 0;
h -= n;
h *= n;
n = h >>> 0;
h -= n;
n += h * 0x100000000; // 2^32
}
return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
};
mash.version = 'Mash 0.9';
return mash;
}
// From http://baagoe.com/en/RandomMusings/javascript/
function Kybos() {
return (function(args) {
// Johannes Baagøe <[email protected]>, 2010
var s0 = 0;
var s1 = 0;
var s2 = 0;
var c = 1;
var s = [];
var k = 0;
var mash = Mash();
var s0 = mash(' ');
var s1 = mash(' ');
var s2 = mash(' ');
for (var j = 0; j < 8; j++) {
s[j] = mash(' ');
}
if (args.length == 0) {
args = [+new Date];
}
for (var i = 0; i < args.length; i++) {
s0 -= mash(args[i]);
if (s0 < 0) {
s0 += 1;
}
s1 -= mash(args[i]);
if (s1 < 0) {
s1 += 1;
}
s2 -= mash(args[i]);
if (s2 < 0) {
s2 += 1;
}
for (var j = 0; j < 8; j++) {
s[j] -= mash(args[i]);
if (s[j] < 0) {
...