2017-06-01 7 views
0
中)(検索を使用して
console.log(this.tiles.find(this.findStart)) 

戻り、このコードを使用して、期待した結果がこの値を修正しますこの "2番目のコードセットの値?はVue.js

+0

findStartはVueのメソッドですか? Vueのタイルとルームデータのプロパティはありますか? – Bert

+0

はい、findStartメソッドです。タイルと部屋はデータプロパティです。 –

+0

それで、findメソッドが問題ではないことが分かります。マウント時にthis.room.startX = this.getRandom(0,1000)を代入する関数を実行します。私がその割り当てをコメントアウトすると、findは完全に機能します。だからthis.room.startXは実際に関数getRandom()として定義されていますか?もしそうなら、なぜtypeOf(this.room.startX)が "番号"として表示されたのですか? –

答えて

0

それが書かれているとおり、あなたの関数はではありませんので、thisは、最上位のコンテキストでwindowオブジェクトを参照し、任意の特定のコンテキストにを結合しました。

機能をにするには、Function.prototype.bindを使用して、特定の状況に合わせてにする必要があります。

console.log(this.titles.find(this.findStart.bind(this))); 
+0

まだ返されていません。 chrome devtoolsコンソールでは次のようになります。 console.log($ vm.tiles.find($ vm.findStart.bind($ vm))); >未定義また ... $ vm.tiles >(8000)[オブジェクト、...、オブジェクト...] $ vm.room.startX > 610 $ vm.room.startY > 453 console.log($ vm.tiles.find(value => value.x == 2 && value.y == 2)); >オブジェクト... //正しい応答 console.log($ vm.tiles.find(value => value.x == $ vm.room.startX && value.y == $ vm.room.startY)) > undefined –

+0

私の悪いコメントの書式設定に申し訳ありません... –

+0

FWIW、Vueメソッドはインスタンス化時にVueインスタンスにバインドされているので、実際には何もしません。 – Bert

0

「これは」関数の中ので、私はあなたが部屋変数を呼び出すようにしたいと仮定しますが、その前に、あなたがバインドする必要があり、その関数内のコードのみを所有して「この」部屋のオブジェクトを所有する 対象と

+0

トップレベルのオブジェクトは、Vueのインスタンスであり、その後* .data.room 新しいヴュー({ EL '#app' データ:{ ルーム:{ 番号:20、 STARTX:3、 startY:3 }、 –