2016-09-16 15 views
1

重複のように思えますが、そうではありません。私が何を試しても、何も働かなかった。JSONオブジェクトを配列にプッシュできません

私は、角のモジュール内のリストを持っています。その後、

this.checkedInterviews = [] 

とし機能:

var interviewModel = { 
         interviewId: self.pendingInterviews[i].id, 
         status: self.pendingInterviews[i].status, 
         location: self.pendingInterviews[i].location, 
         start: self.pendingInterviews[i].start, 
         hideCheck: null 
        }; 
this.checkedInterviews.push(JSON.stringify(interviewModel)); 

私はCannot read property 'push' of undefinedを取得します。 問題は何ですか?

+0

をお試しくださいそれを宣言した。あなたはインタービューで私を見逃している。 – Dan

+0

私はその部分を手書きしていますが、それはコード内で正しいので – Mocktheduck

+0

あなたはもっとコードを教えてください。あなたの関数がthis.checkedInterviewsにアクセスできないようです。 – JOSEFtw

答えて

3

var checkedIntervews = [] 
 
var interviewModel = {}; 
 
checkedIntervews.push(JSON.stringify(interviewModel)); 
 
console.log(checkedIntervews); 
 

 
(function arrayPush() { 
 
this.checkedIntervews = []; 
 
var interviewModel = {}; 
 
this.checkedIntervews.push(JSON.stringify(interviewModel)); 
 
console.log(this.checkedIntervews); 
 
})();

あなたは試してみたい:

​​

NOTE:あなたはこのすべてが同じ関数内であればthisを使用することができるはずですが。これはグローバルスコープでも機能するはずです。私がIIFEを使用した理由は、スコープを分離することだけです。

スニペットはどちらの場合でも追加されています。

あなたの質問にthisが含まれているかどうかわからない場合はbtw。

+0

私はまだエラーが表示されますが、空のJsonを追加できません。 – Mocktheduck

+0

作業スニペットを追加しました – nikjohn

+0

Thisその質問には返答しません。新しい 'checkedInterviews'(間違った:' checkedIntervews')オブジェクト 'Array'を作成し、' this'オブジェクトについては答えませんでした。 'this.checkedInterviews'が' undefined'に等しいのはなぜですか? – Hydro

0

異なる機能を使用している場合、2番目の機能のthisは別のオブジェクトです。

2

2番目の機能は異なると思われます。this

角度モジュールでは、thisを変数に割り当ててから、2番目の関数からアクセスしようとすることができます。今

var vm = this; 
vm.checkedInterviews = []; 

機能であなたが使用してアクセスする必要があります:

例:

vm.checkedInterviews.push();

+0

この方法でメモリリークが発生する可能性があります。だから慎重に扱うほうがいいでしょう。 – Han

+0

あなたは正しく、彼らは異なるスコープにいました – Mocktheduck

0

あなたは「配列をスペルミスしました。この Here is working fiddle

var myApp = angular.module('myApp',[]); 

    function MyCtrl($scope) { 
    $scope.checkedInterviews = []; 
    $scope.pendingInterviews = [{'id':1,'status':'pending','location':'abc','start':'start'}]; 
    for(i= 0; i < $scope.pendingInterviews.length; i++){ 
     var interviewModel = { 
         interviewId: $scope.pendingInterviews[i].id, 
         status: $scope.pendingInterviews[i].status, 
         location: $scope.pendingInterviews[i].location, 
         start: $scope.pendingInterviews[i].start, 
         hideCheck: null 
     }; 
     console.log(interviewModel); 
     $scope.checkedInterviews.push(JSON.stringify(interviewModel)); 
    } 
    console.log($scope.checkedInterviews); 
} 
関連する問題