将动态数据存储在变量中以备将来使用 - Angular.js

Storing dynamic data in variable for future use - Angular.js

本文关键字:将来 js Angular 数据 动态 存储 变量      更新时间:2023-09-26

我正在制作一个简单的程序,我需要在其中存储一定的范围值以供以后使用。范围本身的值可能会更改,但随后我的旧变量将被使用并返回所需的值。

.HTML:

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl"> 
<button ng-click="new()">New Name</button>
<button ng-click="old()">Old Name</button><br/>
{{name}}
<script>
//module declaration
var app = angular.module('myApp',[]);
//Controller declaration
app.controller('myCtrl',function($scope){
    $scope.new = function(){
        $scope.name = "Lina";
        var store = $scope.name;
        $scope.name = "Peter";
    }
    $scope.old = function(){
        $scope.name = store;
    }
});
</script>
</body>
</html>

期望:

On click of Old 'Lina' must appear. 

结果:

On click of Old "Peter" does not change! 

唉,我需要一些方法来存储某些范围对象的值,以便在以后的阶段使用。有人可以帮忙???

根据我的经验,我正在使用在其他变量中复制旧数据来处理这种情况。

例:

假设我有一个变量XYZ 在我的范围内所以我将在 XYZOLD 中创建一个变量。在 XYZOLD 中,我将复制该数据,但处理您必须遵循以下方法的数据。

$scope.xyzold = angular.toJson($scope.xyz);
$scope.xyzold = JSON.parse($scope.xyzold);

使用此代码,您可以在 XYZ 更改时复制旧数据 n 对旧数据没有影响

问题在于store

的范围

JavaScript 中的变量在使用 var 定义时作用域为封闭函数,这意味着当读取 store$scope.old 实际上读取了一个未初始化的变量

这将"共享"整个控制器的变量,因为范围将是控制器定义的封闭函数。该变量在嵌套函数中可见。

app.controller('myCtrl',function($scope){
    var store;
    $scope.new = function(){
        ...
        store = xyz;