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

how to store same data in multiple $scope variables in same controller using angularjs

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

    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>

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

我只想在保存数据后更改数据,不想在保存前显示更改频率。

Because of they have same reference. So you need to create a new reference before the object assignation.

所以使用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))
                };