この JS Bin をチェックしてください http://jsbin.com/iqikuf/3/edit
以下をコンソールで実行すると、表示される結果は理にかなっています。
ステートメント: vd.tools.push(dataItem);
結果: 2
しかし、コンソールで実行すると以下の結果が得られるのはなぜでしょうか?
ステートメント: vd.tools.length
結果: 0
この JS Bin をチェックしてください http://jsbin.com/iqikuf/3/edit
以下をコンソールで実行すると、表示される結果は理にかなっています。
ステートメント: vd.tools.push(dataItem);
結果: 2
しかし、コンソールで実行すると以下の結果が得られるのはなぜでしょうか?
ステートメント: vd.tools.length
結果: 0
DCoderが指摘したように
括弧が必要
vd.tools().length
DCoderの回答を統合して説明したいと思います。
vd.tools
プロパティが格納されたアイテムの量を参照しないJavascript オブジェクトであるobservableArrayを参照します。length
「括弧を追加する」ことで、KnockoutJS の observableArray によってラップされた基礎となる配列への参照vd.tools()
を取得します。
これはデータを格納する実際の配列であり、ここでlength
正しい結果を期待してプロパティを要求できます。
したがって、DCoderの答えは完全に理にかなっています。