Category Archives: KnockoutJS

KnockoutJs – Uncaught TypeError: Cannot call method ‘toLowerCase’ of undefined

今天在學習KnockoutJs時 不知道為什麼常常出現這個這個錯誤信息
Uncaught TypeError: Cannot call method ‘toLowerCase’ of undefined
TypeError: Cannot call method 'toLowerCase' of undefined


我的Model 大概是這樣的

[javascript]
var shareChiWaiViewModel = {
sharechiwaiList =ko.observableArray([]),
selectedfilter: ko.observable(),
}

shareChiWaiViewModel.filteredItems = ko.computed(function() {
var filter = this.selectedfilter().toLowerCase();
/*
* 還有很多還沒有整理好的Code
* There are lots of mess code below…
*/
});

// Initial object…

// Bing Model
ko.applyBindings(shareChiWaiViewModel);

[/javascript]

每當我Refresh時 都會出現
Uncaught TypeError: Cannot call method ‘toLowerCase’ of undefined
我的 selectedfilter 應該是有value的..

經過了一段時間的Research
終於發現了問題的所在
原來是因為當Model的selectedfilter 還沒有 被assign value之前..
已經執行了

[javascript]
var filter = this.selectedfilter().toLowerCase();
[/javascript]

所以便出現錯誤了

解決方法
只是在定義view model時 先方一個Empty string “” 進這個 observable上便可以..
E.G.

[javascript]
selectedfilter: ko.observable(""),
[/javascript]

Hope you find it useful

Check if KnockoutJs is loaded – 檢查KnockoutJS 是否已經安裝

最近終於開始了 學習 KnockoutJs
希望可以好好運用KnockoutJs 來學 MVVM 這個Concept
之後可以能在其他的Application上應該MVVM
第一個步驟..當然是檢查一下 KnockoutJs 是否已經安裝在你的網頁上..
E.G. 只否可以在你的網頁你使用Knockout JS

以下是我測試的放法
檢查網頁上有沒有 window.ko 這個Object
如果是”undefined” 的話…你的KnockoutJs Library 應該是沒有安裝好

[javascript]
<script src="/Scripts/knockout-3.0.0.js" type="text/javascript"></script>

<script type="text/javascript">
if (typeof (window.ko) == "object") {
alert("Knockoutjs loaded");
} else {
alert("Knockoutjs not loaded");
}
// return "undefined" – if Knockoutjs is not loaded
// return "object" – if Knockoutjs is loaded
alert(typeof (window.ko));
</script>
[/javascript]

Hope you find it useful