如何使用angularjs在同一控制器中的多个$ scope变量中存储相同的数据

时间:2018-04-17 05:34:09

标签: angularjs angularjs-scope angularjs-controller

我必须在两个不同的范围变量中存储相同的数据。我按照以下代码保存了。

    app.controller('ClientsCtrl', function ($scope, $http) {

        $scope.model = {};

        $http.get("client/getdata", {})
            .then(function (result) {

                //For e.g, I have received result.data.Frequency = 'Weekly'

                $scope.model = {
                    edit: result.data,
                    show: result.data
                };

            },
            function (error) {
            });

    });

使用这些范围变量来显示和编辑

<div>        
    <div>
       Show Model Frequency: {{model.show.Frequency}}<br /><br />
       Edit Model Frequency: {{model.edit.Frequency}}
    </div>

    <div>
        <md-select ng-model="model.edit.Frequency" aria-label="Frequency">
            <md-option value="Daily"> Daily</md-option>
            <md-option value="Weekly"> Weekly</md-option>
        </md-select>
    </div>
</div>

如果我在编辑模型中更改了值,它在show模型中也会自动更改,即使我存储在不同的变量中。

我想在保存数据后才更改数据,并且不希望在保存之前显示更改频率。

1 个答案:

答案 0 :(得分:1)

  

因为他们有相同的参考。因此,您需要在对象分配之前创建新引用。

因此请使用angular.copy

$scope.model = {edit:angular.copy(result.data),show:angular.copy(result.data)};

或试试这个

$scope.model = {
                edit:JSON.parse(JSON.stringify(result.data)),
                show:JSON.parse(JSON.stringify(result.data))
                };