我在IE8中遇到了Knockout(v3.2)問題。綁定表達式如在IE8中,KnockoutJS 3.2顯示實際的可觀察函數而不是觀察值
<div data-bind="text: $data.Property"></div>
-where Property
被一個observable-導致基因敲除的可觀察到的功能的實際文字,而不是顯示所述值Property
的假定來表示。
縱觀規格(淘汰賽茉莉測試),我發現,他們明確不支持文本節點綁定IE < 9(線442)https://github.com/knockout/knockout/blob/master/spec/bindingAttributeBehaviors.js#L442
添加括號似乎解決這個IE8的text: $data.Property()
但是,擔心的是:這會對其他瀏覽器產生不利影響嗎?我最初的假設是不是因爲一些常識性的原因,但我想知道是否有人知道這種解決方法,或者是否添加括號?
更新1:感謝大家在這一點上的意見。進一步調查後,似乎問題是有重複的JavaScript文件被加載。
更具體地說,有的則是過分重複重複淘汰賽庫導致視圖模型的觀測是一個不同的情況下這意味着他們無法正常展開進行顯示。
這被證明是由周圍的淘汰賽庫喜歡這裏建議什麼加一個條件:Stop IE from loading dynamically included script twice。添加條件使得首選綁定方法(取決於淘汰解包觀察對象)在IE8中工作。
的問題無/答案,我迄今發現將在我的情況就足夠了,所以我會問如何防止多淘汰賽庫加載兩次的新問題。
更新2:新問題張貼對於那些想跟着:How to stop Knockout 3.2 library loading twice
添加括號就是了。我從來不喜歡knockout是如何神奇地決定是顯示綁定的值還是調用它,然後顯示返回值。現在我有一個不信任的具體理由!我經常放置父母,所以沒有混淆。兩者之間不應有任何顯着差異,並且您不會引入任何x瀏覽器問題。 – spender
我已經在Chrome(當前版本),IE9,10和11中測試過這些parens,並且如果有幫助的話,它們已經成功了。 –
如果你省略'$ data'前綴,你應該可以跳過parens,只需要'text:Property' – dfperry