Skip to content

Instantly share code, notes, and snippets.

@sslotsky
Last active November 5, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sslotsky/5efcb618ec6d6dc18d87 to your computer and use it in GitHub Desktop.
Save sslotsky/5efcb618ec6d6dc18d87 to your computer and use it in GitHub Desktop.
<html>
<head>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
</head>
<body>
<div id="foo" class="container">
<div data-bind="foreach: bars">
<div class="row">
<label>
<input type="radio" name="selectedBar" data-bind="click: $parent.selectBar" />
<span data-bind="text: name"></span>
</label>
<span data-bind="text: selectedText"></span>
</div>
</div>
</div>
<script type="text/javascript">
var Bar = function(name) {
this.name = ko.observable(name);
this.isSelected = ko.observable(false);
this.selectedText = ko.computed(function() {
return this.isSelected() ? "Currently selected" : "";
}, this);
};
var Foo = function(barNames) {
this.bars = ko.observableArray(_.map(barNames, function(name) {
return new Bar(name);
}));
this.selectBar = function(bar) {
_.each(this.bars(), function(bar) {
bar.isSelected(false);
});
bar.isSelected(true);
return true;
}.bind(this);
};
var names = ["Spo-Co", "Fieldhouse", "Sanctuary", "Gabe's"];
var foo = new Foo(names);
var el = document.getElementById("foo");
ko.applyBindings(foo, el);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment