Я знаю, что было задано 100-е из них, но я не могу найти решение, подходящее для моего случая.
У меня есть эти переключатели:
<div class="left-floated-box" >
<input type="radio" name="options" value="1" data-bind="checked:loadFilteredHistory">1
</div>
<div class="left-floated-box" >
<input type="radio" name="options" value="2" data-bind="checked:loadFilteredHistory">2
</div>
как вы можете видеть, я пытаюсь вызвать функцию с именем loadFilteredHistory
и это так просто:
loadFilteredHistory = function(){
console.log("I'm inside of teh function");
};
Но когда я нажимаю на радиатор, ничего не происходит. Что мне здесь не хватает? Почему я не могу назвать функцию? Я знаю, что это что-то очень маленькое, но я не могу заметить это прямо сейчас.
Я бы создал наблюдаемый для привязки к флажку:
self.selectedOption = ko.observable();
Затем подпишитесь на наблюдаемое для выполнения своих действий при изменении выбранного варианта:
self.selectedOption.subscribe(function(newValue) {
console.log('selectedOption change', newValue);
});
Теперь вы можете просто привязать selectedOption
к checked
привязке привязки:
<div class="left-floated-box" >
<input type="radio" name="options" value="1" data-bind="checked:selectedOption" />1
</div>
<div class="left-floated-box" >
<input type="radio" name="options" value="2" data-bind="checked:selectedOption" />2
</div>
См. Http://jsfiddle.net/sjroesink/bt3mU/ для демонстрации
Проверенная привязка данных больше подходит для синхронизации (двухсторонняя привязка) текущего значения флажка с переменной в вашей модели, если вы хотите прослушивать выбранные элементы, вы можете привязать клик, а именно:
<div class="left-floated-box" >
<input type="radio" name="options" value="1" data-bind="click:loadFilteredHistory">1
</div>
<div class="left-floated-box" >
<input type="radio" name="options" value="2" data-bind="click:loadFilteredHistory">2
</div>
Затем вам нужно создать модель с соответствующей функцией, и, наконец, вы примените эти привязки с ko.applyBindings, проходящими в вашей модели. Я добавил инструкцию console.log, чтобы показать вам, как вы можете захватить щелчок с помощью event.currentTarget.
var viewModel = {
loadFilteredHistory: function(model, event) {
console.log("Inside the function");
console.log("Clicked checkbox = " + event.currentTarget.value);
return true;
}
}
ko.applyBindings(viewModel);
Является ли loadFilteredHistory
методом вашего viewModel? По внешнему виду вашего фрагмента это не так.
Попробуйте что-то вроде этого:
var myViewModel = { radioButtonValue: ko.observable() } ko.applyBindings(myViewModel);
Вы также можете уточнить, что это вопрос knockout.js. знак равно
ОБНОВИТЬ:
Фактически из внешнего вида этого связывания не допускается передача функции значение. Он ожидает наблюдаемую ценность. Для радиообъектов он будет иметь новое значение для наблюдаемого. Я обновил фрагмент выше.
http://knockoutjs.com/documentation/checked-binding.html
Чтобы вызвать функцию при этом изменении, вы можете использовать myViewModel.radioButtonValue.subscribe(loadFilteredHistory)
Вы пропустили код "/input"
<div class="left-floated-box">
<input type="radio" id="button" name="options" value="1">1 </input>
</div>
<div class="left-floated-box">
<input type="radio" id="button" name="options" value="2">2 </input>
</div>
$('#button').click(function() {
alert("I'm inside of teh function");
});
попробуй это -
$('.left-floated-box input').click(function() {
if($('input').is(':checked')) { alert("it checked"); }
});