31834


スコープの基礎的な指摘になるかもしれませんが、以下の事象が起きます。

[code]

    app.controller("test", function($scope){
        var options = $scope.nav.getCurrentPage().options;
        $scope.item = options.item;  // {str:'test',int:'000000'}
    
        $scope.click = function() {
            var data = $scope.item;
            console.log($scope.item.int);  // 000000
            data.int = "123456";
            console.log($scope.item.int);  // 123456
    
[/code]

以上のように、変数dataにバインドした$scopeを代入後、変数dataの値を変更した筈ですが、$scope自体の値も変わっています。  
これは仕様なんでしょうか。  
また、回避する手段はあるのでしょうか。  
もしかしたらスコープの基礎的な部分かもしれませんが、分かる方が居ましたら回答お願いします。


CC BY-SA 3.0
2017-01-14T02:07:21.163
31830
2017-01-14T03:44:51.693
19752
question
javascript monaca onsen-ui angularjs
AngularJSにて、変数に$scopeを代入した際の質問


JavaScriptにおいて、オブジェクトや配列を変数に代入すると参照渡しとなります。  
`data`は最終的に`$scope.nav.getCurrentPage().options.item`を参照しているということです。

これを回避するには、`angular.copy()`を使用します。

[code]

    var data = angular.copy($scope.item);
    
[/code]


CC BY-SA 3.0
2017-01-14T03:44:51.693
31834
2017-01-14T03:44:51.693
9566
31830
answer