如何使用 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))
};
我必须将相同的数据存储在两个不同的范围变量中。我已经按照下面的代码保存了。
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))
};