knock-out lier une clé d'objet de valeur à la liste déroulante

J'ai les modèles suivants:

var allCategories = [{
    id: 1,
    name: 'Red'},
{
    id: 5,
    name: 'Blue'}];

function model() {
    self = this;
    self.name = ko.observable("");
    self.categoryId = ko.observable(-1);
    self.categoryName = ko.computed(function() {
        if (self.categoryId() == -1) return "";
        return getCategoryNameById(self.categoryId()).name;
    });
}

function getCategoryNameById(id) {
    return _.find(allCategories, function(cat) {
        return cat.id == id;
    });
}

Je tiens à offrir un menu déroulant permettant de sélectionner la catégorie, mais je n'ai aucune idée de comment lier.
Peut-être que j'ai utilisé la bonne approche avec mes modèles, mais c'est probablement la façon dont je accéder à mes données depuis le serveur, j'ai donc essayé d'envelopper mon JS autour de cela.

J'ai essayé quelque chose comme ceci:

<select data-bind="options: categories, optionsText: 'name', value: 'id', optionsCaption: 'Categorie...'"></select>

Mais je ne comprends pas comment connecter la liste déroulante de la valeur pour le modèle categoryId.

Ici est un violon avec un travail de liaison pour le nom de la propriété.

OriginalL'auteur kannix | 2012-11-27