2012-03-29 114 views
0

我收到以下錯誤在IE8嘗試當數據綁定<input>標籤:IE8綁定錯誤

無法解析綁定。

消息:[object Error];

綁定值:啓用:$ root.hasTag(「富」)

從本質上講,我若是有特定的標記沒有模型的啓用一個複選框,數據綁定應該禁用複選框。

<input type="checkbox" data-bind="enable: $root.hasTag('foo')" value="foo" 
    class="filtercheck" /> 

視圖模型必須通過所有型號下面的方法來循環和總結型號匹配的標籤,如果該值大於0,則返回true。

self.hasTag = function(tag) { 
    var sum = 0; 
    var item; 
    for (var i=0; i<this.items().length; i++) { 
     item = this.items()[i]; 
     if (item.tags().indexOf(tag) != -1) { 
      sum++; 
     } else { 
      continue; 
     }   
    } 
    return (sum > 0) ? true : false; 
}; 

爲什麼這個數據綁定僅在IE8中拋出一個錯誤?

回答

2

我相信這是因爲indexOf沒有在IE8中定義。做了一個快速測試,並返回undefined。你將不得不去supply your own version

希望這會有所幫助。

+0

你可能是對的,我會試試看。我可能需要使用knockoutjs [observableArray.indexOf](http://knockoutjs.com/documentation/observableArrays.html#indexof) – 2012-03-30 00:08:46

+0

是的,這是一個選項。您也可以在不可觀測數組上使用ko.utils.arrayIndexOf。 – madcapnmckay 2012-03-30 00:17:14