【问题标题】:$scope variable doesn't change in callback function, angularjs [duplicate]$scope变量在回调函数中没有改变,angularjs [重复]
【发布时间】:2017-10-05 17:18:54
【问题描述】:

我想在 one 函数运行期间将微调器显示为按钮,完成后隐藏微调器,这是我尝试过的:

<div ng-controller="MyController">       
        <button ng-click="InsertData()">

            <i class="fa fa-refresh fa-spin" ng-show="loading"></i>Loading
        </button>
        <br />
        {{loading}}
    </div>

这是controller.js

angular.module('MyApp', []).controller('MyController', function ($scope) {

$scope.InsertData=function()
{
    $scope.loading = true;
    $scope.one($scope.two);

}

$scope.one = function (callback) {

    setTimeout(function () { alert("this is function one"); callback(); }, 1000);

}

$scope.two = function () {
    alert("two");
    $scope.loading = false;

}

});

但是这一行

$scope.loading = false;

不执行!虽然它上面的行运行,但我的意思是 alert("two") 出现了!

为什么回调函数中 $scope.loading 的值没有变化?如何解决这个问题?

【问题讨论】:

    标签: angularjs callback ng-show


    【解决方案1】:

    问题是因为您正在使用setTimeout 这是一个Javascript函数,这将导致问题,其中范围变量不会在范围内更新。因此,我们必须为此使用角度包装器$timeout()

    更多详情here,了解$timeout()setTimeout()的区别请参考here


    下面是这个问题的有效方法。

    JSFiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 2015-03-26
      • 2015-10-25
      • 2017-08-08
      • 2016-11-23
      • 1970-01-01
      相关资源
      最近更新 更多