2016-12-27 3 views
0

私は以下のサンプルコードを与えて、users配列に要素を追加したいと思います。私がコンソールにユーザーオブジェクトを記録するとき、私は1つの要素を持つ配列を取得していますが、3つのリソースオブジェクト、約束と$解決されたプロパティを持っています。誰かが私がここで行方不明を説明することができます。リソース・アクションのデフォルト・セットはどのような角度で返され、返されたアセットはどのように変更できますか?

/*@ngInject*/ 
    constructor(User, Auth, $state, $uibModal, $scope) { 
     this.Auth = Auth; 
     this.$state = $state; 
     this.$uibModal = $uibModal; 
     this.$scope = $scope; 

     this.newUser = {name: "New User", email: "[email protected]", password: "gg"}; 
     this.users = User.query(); 
     this.users.push(this.newUser); 
     console.log(this.users); 

     this.$scope.$watch('this.user', function(newUser) { 
     console.log("entered watch"); 
     var val = this.users.indexOf(newUser); 
     if(val == this.users.length - 1) { 
      this.openNewUser(); 
     } 
     }); 

    } 

答えて

0

あなたが不足している唯一のものは、返された値が後で読み込まれる意味、User.query()への呼び出しが非同期であるという事実です。

あなたはthis.users

例に依存しているコードを実行したい場合は、クエリの約束(this.users.$promise)へのコールバックを添付する必要があります:私は成功の内側にそれを実行しようとしました

//First get the users 
var self = this; 
this.users = User.query(); 
this.users.$promise.then(function(){ 
//Do stuff with the user list 
self.users.push(this.newUser); 
}); 
+0

をあなたが示してきたように機能しますが、this.users.push()の 'this'は内部では定義されていません。ここで何が起こっていて、どうすれば修正できますか? – Kindman

+0

私の悪い。私はes6に慣れています。私は私の答えを更新しました –

+0

実際には私はes6でそれが欲しいですが、私は以前の方法で範囲の問題があります。私はそれを修正しようとしているが、私は範囲の問題を理解しているとは思わない。 – Kindman

関連する問題