我已經得到了我想要使用淘汰賽使用下面的代碼綁定一個div:淘汰賽結合拋出「無法處理綁定」例外IE8
<div data-bind="style: { height: ($('.someDiv').height() - 37) + 'px' }">...</div>
這工作完全在Chrome中,FF或IE11。不確定它已經在IE9-10上測試過了。但它在IE8上失敗,拋出了「無法處理綁定」異常。
出人意料的是,這個工程:
// without substracting 37
style: { height: ($('.someDiv').height() + 'px' }
// replacing 37 by the same computed value, doesn't matter if it ends up being 0
style: { height: ($('.someDiv').height() - $('.someDiv').height()) + 'px' }
但更令人驚訝的,這也失敗了:
// replacing 37 by something (dumb) assuring a positive value
style: { height: ($('.someDiv').height() - $('.someDiv').height() + $('.someDiv').height()) + 'px' }
我有點無知在這裏。任何人都知道這件事?
我使用jQuery 1.11.1和Knockout 3.1.0。
編輯:
好,我向前移動了一點。看來div someDiv
是在自定義綁定中使用模板注入的。因此,如果我做這樣的事情周圍的結合:
console.log('before ko');
console.log('length:'+$('.someDiv').length);
console.log('$height:'+$('.someDiv').height());
ko.applyBindings(vm, $('#container').get(0));
console.log('after ko');
console.log('length:'+$('.someDiv').length);
console.log('$height:'+$('.someDiv').height());
的輸出(無論是在IE8和Chrome瀏覽器):
before ko
$length:0
$height:null
after ko
$length:1
$height:762
所以我想結合這取決於中有事不同在淘汰賽瀏覽器。
你應該隔離這個問題 - 我敢打賭,只是'$ .height'在IE8中失敗。你使用的是什麼版本的jQuery?你可以寫一個函數或者其他的東西來驗證'$('。someDiv')的值。height()'是你期望的嗎? – xdumaine 2014-09-30 12:42:52
我會嘗試並編輯問題。但是如果兩個工作測試都沒有失敗,那麼它怎麼才能成爲'$ .height'呢? – 2014-09-30 12:51:36
是否有異常的任何詳細信息 - 我有時會發現,如果你進一步深入到堆棧跟蹤在淘汰賽時綁定錯誤發生,你經常會發現一個更有意義的信息隱藏掉 – 2014-09-30 13:01:00