Geo*_*uer 9 jquery knockout.js
我有一个简单的复选框,其值通过一些基础设施调整,我正在写入localStorage中的持久状态.我知道这通常是通过设置viewModel来完成的,但是基础结构不知道任何敲除绑定并且无法访问它们.
我不认为这会是一个问题,因为我认为淘汰赛已经在'变更'事件中运行,但$checkbox.prop('checked', true).trigger('checked')未能触发我的观察.即使直接使用点击事件也不能满足我的需求.
敲门线会发生什么事?如何让它读取控件的状态?
jsbin在这里展示了这种奇怪的行为.尝试直接选中复选框,然后单击按钮.
就我而言,这与 jquery 错误有关。我使用 github淘汰赛问题跟踪器来追踪这个问题;看这里。
最终我在我的组件中这样做了:
var isjQueryOld = /^(0|1)\.[0-8]\./.test($.fn.jquery); // <=1.8.*
var toggleCheckbox = isjQueryOld ? jQueryOldToggleCheckbox : function($el) { $el.trigger('click') } //https://github.com/knockout/knockout/issues/987
function jQueryOldToggleCheckbox($el) {
//This should be simple right? See http://stackoverflow.com/a/8595601/5056
//and "simulating events to adjust knockout models" jasmine spec
//all this is nessessary to get everything working with knockout
var changeTo = !$el.prop('checked');
if(changeTo)
$el.attr('checked', true);
else
$el.removeAttr('checked');
$el.trigger('click');
$el.prop('checked', changeTo);
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中
toggleCheckbox($el);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6194 次 |
| 最近记录: |