くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

【KnockoutJS】Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

KnockoutJS使ってたら

Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

って出てなんぞ( ´_ゝ`) ってなって解決した。

<div data-bind="foreach: people">
    <p data-bind="text: name, click: clickName"></p>
</div>

という感じで記述していたのですが、js側で実装しているclickName関数は一つ上のコンテキストなので$parent.clickNameと記述しないとダメだった。なので、

<div data-bind="foreach: people">
    <p data-bind="text: name, click: $parent.clickName"></p>
</div>


これが正解っぽい。

ただ、エラー文(Uncaught TypeError: Cannot read property 'toLowerCase' of undefined)の意味はよく分からんかった。おそらくKnockoutJSの内部的にtoLowerCaseを使ってる部分があって、そこでエラーなんだろうなー...