【问题标题】:Storing dynamic data in variable for future use - Angular.js将动态数据存储在变量中以备将来使用 - Angular.js
【发布时间】:2016-02-04 08:27:05
【问题描述】:

我正在制作一个简单的程序,我需要在其中存储一定的范围值以供以后使用。范围本身的值可能会发生变化,但随后我的旧变量将开始使用并获得所需的值。

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! 

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

【问题讨论】:

    标签: javascript angularjs model-view-controller data-binding


    【解决方案1】:

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

    示例:

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

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

    使用此代码,您可以在 xyz 发生变化时复制旧数据 n 对旧数据没有影响

    【讨论】:

    • bs bs ab kya ruaonge kya
    【解决方案2】:

    问题出在store的范围内

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2017-12-10
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      相关资源
      最近更新 更多