我必须在两个不同的范围变量中存储相同的数据。我按照以下代码保存了。
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模型中也会自动更改,即使我存储在不同的变量中。
我想在保存数据后才更改数据,并且不希望在保存之前显示更改频率。
答案 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))
};