0

これは私がやろうとしていることの非常に簡単な例です

Athlete.save(athlete,function(result)
{
       $scope.athlete = result.athlete;
});

問題は、ビューで $scope.athlete 変数が更新されないことです。更新するには、これを行う必要があります

Athlete.save(athlete,function(result)
{
       $scope.athlete.fname = result.athlete.fname;
       $scope.athlete.lname= result.athlete.lname;
       $scope.athlete.gender= result.athlete.gender;
       ....
});

これはすぐにイライラします。コードの最初のブロックでは、Angular が $scope.athlete 変数が更新されたことを認識していないようです。この関数は、jquery 呼び出しではなく、ng-click からトリガーされます。私が知る限り、角度のある方法で実行しています。

ここに私が作ったより簡単なケースがあります: http://plnkr.co/edit/lMCPbzqDOoa5K4GXGhCp

4

3 に答える 3

1

athlete = { fname: 'new fname', lname: 'new lname' };athlete渡している変数を更新するのではなく、という新しいローカル変数を作成しているようです。

これを処理するより良い方法は$index、 のathleteupdateAthlete()関数に渡し、次のようにすることです。

$scope.updateAthlete = function (index) {
    $scope.athletes[index] = { 
      fname: 'new fname', 
      lname: 'new lname'
    };
};

編集: plunkr の動作を参照してください: http://plnkr.co/edit/KPu3CSvGIl8l581r9A5o?p=preview

于 2013-10-28T04:18:30.517 に答える
0

この回答を参照してください:

https://stackoverflow.com/a/13104500/151084

プリミティブは値で渡され、オブジェクトは「参照のコピー」で渡されます。

具体的には、オブジェクト (または配列) を渡すと、(目に見えない形で) そのオブジェクトへの参照が渡され、そのオブジェクトの内容を変更することは可能ですが、参照を上書きしようとしても、コピーには影響しません。呼び出し元が保持する参照 - つまり、参照自体は値によって渡されます。

これは、プランカーが更新されない理由を説明しています。ただし、インラインコードの例(を使用する場所$scope.athlete = result.athlete)は機能するはずです。その失敗を示すサンプルを作成できますか?

于 2013-10-28T04:44:09.867 に答える