Cercando di ottenere Knockout base click legame istituito, come nell'esempio qui sotto:Knockout click vincolante strano comportamento
<button id="btn-a" class="btn" data-bind="css: {'btn-primary':mode() == 'manual'}, click: $root.mode('manual')">Manual</button>
<button id="btn-b" class="btn" data-bind="css: {'btn-primary':mode() == 'automatic'}, click: $root.mode('automatic')">Automatic</button>
<label>MODE: </label><span data-bind="text:mode()"></span>
<script>
$(function() {
var TestModel = function() {
var self = this;
this.mode = ko.observable('manual');
};
var testModel = new TestModel();
window.testModel = testModel;
ko.applyBindings(testModel);
});
Fiddle: http://jsfiddle.net/aq85wk65/
Tuttavia, l'esecuzione in due aspetti:
- Il binding causa il valore
mode()
per l'avvio come "automatico", anche se inizializzarlo in modo esplicito su "manuale". - Ogni volta che un pulsante viene premuto, la console JavaScript mostra:
Uncaught TypeError: h.apply is not a function
normalmente sarei d'accordo con te completamente, ma in questo caso sta impostando il valore di un osservabile da un controllo. Se avesse diverse opzioni, definire un setter unico per ciascuno sarebbe un po 'troppo. – dfperry