2017-02-09 105 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') –