2017-02-09 103 views
0

的小提琴是在這裏:http://jsfiddle.net/7kv0d3t6/1/古怪的行爲

注意,我故意裝兩個獨立的可觀察到的數組:programmeList & programmeList2。

我不明白爲什麼映射版本不起作用:

ko.mapping.fromJS(data, {}, ViewModel.programmeList); 

而且非常奇怪的事情是,HTML數據綁定跨度長顯示:

<span data-bind="text: programmeList().length"></span> 

...節目「5」,但是沒有在html中顯示任何內容(至少應該顯示錶格標題,對嗎?)或在console.log輸出中顯示。

如果我更改了html代碼以使用programmeList2,它確實顯示了表格,但我寧願使用映射插件的方式進行操作,我也想了解它在我的小提琴中顯示的異常情況!

回答

2

在代碼中,你缺少的=這裏:

<p data-bind="if: programmeList().length = 0"> 
<!--         ^should be ==  --> 

Updated fiddle作品。

+1

哦,我的上帝,我真是個白癡!所有這一次它一直在工作,但我已經重新分配了該死的價值!看上去很好......並且很抱歉浪費大家的時間! – TheMook

+0

許多js linters對這些類型的錯誤都有警告(即在if塊中單個'=')。將邏輯移至您的視圖模型通常有助於避免類似這樣的錯字。例如:'this.hasProgrammes = ko.pureComputed(()=> this.programmeList()。length> 0)' – user3297291

+0

有人建議先寫常量,這樣如果你缺少一個等號('if :0 = programmeList()。length') –