2017-02-09 6 views
0

フィドルはこちら(jsfiddle含む):私は意図的に二つの別々の観察可能な配列をロードしています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出力には何も表示されません。

programmeList2を使用するようにhtmlコードを変更した場合は、テーブルが表示されますが、マッピングプラグインを使用してやりたいのですが、私のフィドルで表示されている異常を理解したいと思います!あなたのコードで

答えて

2

、あなたはここで=が欠落しています

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

Updated fiddle作品。

+1

ああ私の良い神私はそんなにばかです!今回はそれが効いていますが、私はその値を再割り当てしています!まあ、目撃された...と皆の時間を無駄にしてごめんなさい! – TheMook

+0

多くのjsリンターは、このような種類のエラー(つまり、 'if'ブロック内の' = ')に対して警告を出します。ロジックをビューモデルに移動すると、通常、これらのタイプミスを避けるのに役立ちます。例: 'this.hasProgrammes = ko.pureComputed(()=> this.programmeList()。length> 0)' – user3297291

+0

等号がないとエラーが出るように定数を書くことをお勧めします( 'if :0 = programmeList()。length') –