Próbując zdobyć podstawową Knockout kliknięcie wiązaniami skonfigurować, jak na poniższym przykładzie:Knockout click wiążące dziwne zachowanie
<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/
jednak działa na dwie kwestie:
- Wiązanie powoduje, że wartość
mode()
zaczyna się jako "automatyczna", nawet jeśli jawnie zainicjowaliśmy ją jako "ręczną". - Ilekroć kliknięciu przycisku, konsola JavaScript pokazuje:
Uncaught TypeError: h.apply is not a function
zwykle zgadzam się z tobą całkowicie, ale w tym przypadku ustawia on wartość obserwowalną od kontroli. Gdyby miał kilka opcji, zdefiniowanie unikalnego setera dla każdego byłoby trochę większe. – dfperry