J'essaie d'affecter une valeur de variable à une autre variable $ scope (ou une variable normale) dans le script AngularJS, et de ne modifier aucune d'entre elles après cela. Mais je vois que les deux variables sont changées automatiquement - Il y a des modifications pour d'autres variables après l'affectation ci-dessus. Pourquoi mes variables ("d" et "$ scope.dataset_d_final") qui ne sont pas modifiées sont-elles automatiquement modifiées? Comment puis-je l'empêcher?Comment obtenir une variable inchangée dans Angularjs
Je AngularJS ci-dessous le code
<script>
var app = angular.module('ExampleApp', ['ui.plot']);
app.controller('PlotCtrl', function ($scope)
{
'use strict';
$scope.sname = "Tttt";
$scope.dataset_v = {
"d0": { "id": 0, "name": "Housing", "value": 18 },
"d1": { "id": 1, "name": "Travel", "value": 31.08 },
"d2": { "id": 2, "name": "Restaurant", "value": 64 },
"d3": { "id": 3, "name": "Bank", "value": 3 },
"d4": { "id": 4, "name": "Movies", "value": 10 }
};
$scope.dataset_final={};
$scope.assign = function()
{
var dataset=$scope.dataset_v;
// Declare resulting empty array
var d = [];
// Get object keys and iterate over them
Object.keys(dataset).forEach(function (key)
{
// Get the value from the object
var value = dataset[key].value;
// Update values if in the range
if(value >= 10 && value <= 20) {
dataset[key].value = 7;
} else if(value > 20 && value <= 40) {
dataset[key].value = 8;
}
d.push(dataset[key]);
$scope.dataset_d_final = d; // THIS IS THE ASSIGNMENT
// "$scope.dataset_d_final" and "d" variables gets changed even after performing no modification later in the code
// REVERSING
var dataset1 = $scope.dataset_v;
var d1 = [];
Object.keys(dataset1).forEach(function (key) {
// Get the value from the object
var value = dataset1[key].value;
// Update values if in the range
if (value == 2) {
dataset1[key].value = 1;
} else if (value == 3) {
dataset1[key].value = 4;
}
d1.push(dataset1[key]);
});
alert('Final');
alert(JSON.stringify($scope.dataset_d_final, null, 4));
alert(JSON.stringify(d, null, 4)); // Both got changed as per above function
});
</script>
Ma dernière alerte pour les variables "d" et "scope.dataset_d_final de $" ne doit pas être changé .. comment puis-je faire?
Je souhaite publier des données d ou $ scope.dataset_d_final sur le serveur via le service $ http.
Salut Pankaj, j'ai essayé angular.copy .. il ne fonctionne pas –
@SathishPanduga avez-vous essayé comme je l'ai suggéré .. Mais –
essaie d'obtenir la valeur d'origine de scope.dataset_d_final $ .. Pourquoi J'utilise angular.copy pour $ scope.dataset_v? Pourriez vous me laisser savoir s'il vous plait ? –