gpt4 book ai didi

javascript - 我们如何在 AngularJS 中更改作用域变量的值

转载 作者:行者123 更新时间:2023-11-30 07:58:33 26 4
gpt4 key购买 nike

我正在尝试将作用域变量分配给 AngularJS 脚本中的普通 javascript 变量,并修改普通变量的值。但是我看到,基于普通变量中所做的更改,作用域变量数据会自动更改。我们如何在修改了普通的 javascript 变量后不更改 Scoped Variable 的数据?

我在 HTML 代码中使用一个按钮来调用 assign()

我有下面的 AngularJS 代码

<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.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;
}
// Push the updated(or not) value in the array
d.push(dataset[key]);
});
alert(JSON.stringify(d, null, 4));
});
</script>

在对普通 js 变量(即数据集和 d..)进行更改后

$scope.dataset_v 不应该改变,所以它应该像下面那样是原始的,我们该怎么做?

    $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 }

我使用普通的 javascript 变量(数据集和 d)来存储修改后的值,以将它们发布到服务器以进行数据存储(内部)。

最佳答案

你可以使用 angular.copy() .而不是

var dataset = $scope.dataset_v;

使用

var dataset = angular.copy($scope.dataset_v);

这样您就可以保留原始的 dataset_v

关于javascript - 我们如何在 AngularJS 中更改作用域变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33997639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com