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 大概是這樣的

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);

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

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

var filter = this.selectedfilter().toLowerCase();

所以便出現錯誤了

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

  selectedfilter: ko.observable(""),

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 應該是沒有安裝好

<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>

Hope you find it useful