2012-09-14 31 views
6

我喜歡KO框架,但調試有時對我來說只是一場噩夢。在常規javascript代碼的情況下,我可以放置一個斷點並在運行時去看看有什麼不對,但是如何調試敲除表達式?在大多數情況下,綁定錯誤是由於缺少一些符號或錯誤的語法造成的,有時敲除會向我顯示有關此問題的明確錯誤,但有時候不會,預期的數據不會出現在頁面上,或錯誤消息(如「綁定表達式錯誤」 ,甚至像'沒有找到函數abc'這樣的消息也不能讓我立即明白出了什麼問題,因爲我不知道我的模型KO運行時目前處於哪個級別。理想情況下,應該有一個瀏覽器插件,在任何KO表達式中放置斷點或其他東西,並查看它在運行時運行的上下文。像這樣的東西是在市場還是預期?有關改進調試過程的任何想法?你如何調試你的knockout.js綁定表達式?

+4

一些建議:看看這裏的一種方式來查看您當前的上下文:http://stackoverflow.com/questions/9261296/any-good-techniques-to-debug-template-binding-faults-for-淘汰賽-JS。另外,如果您真的想將綁定表達式移出標記,請查看此項目:https://github.com/rniemeyer/knockout-classBindingProvider –

+0

謝謝。同樣的問題已被回答 – YMC

+0

我利用一個小調試bindingHandler:http://stackoverflow.com/a/16242988/647845 –

回答

10

在開發過程中,我使用調試版本並在函數createBindingsStringEvaluator()(v2.1.0中的行1858)上設置斷點。因此,在綁定被「解析」之前,您可以分析將要評估的表達式,找出哪些綁定失敗,它們的上下文,並且您可以逐步完成綁定過程,以便您可以一路走完,直至失敗。

爲了儘量減少非常複雜的綁定問題,特別是如果需要重複的話,我會考慮創建一些可以一次應用一組綁定的自定義綁定處理程序。

+0

當你所有的綁定失敗並且沒有腳本錯誤時,你會做什麼? – Nikos

+2

這取決於你有什麼樣的「失敗」。如果它發生在多個綁定中,則一次處理一個問題。通過確保一切都符合你的期望,理解它失敗的原因。 –

+0

很酷謝謝!!!! – Nikos

0

在當前版本(v 3.4.1)中,該函數被稱爲parseBindingsString。在那裏設置一個debuggerconsole.log,會給你一些信息。