1

我正在使用 Angular.js 构建一个应用程序来访问 LinkedIn API。发生的情况是,当我调用 API 时,模型不会立即刷新,而是在我在屏幕上进行另一次更改之后。例如,我已将 API 调用绑定到一个按钮,但我必须按两次才能使屏幕刷新数据。这是我的控制器:

    angbootApp.controller('AppCtrl', function AppCtrl($scope, $http) {
        $scope.getCommitData = function() {
            IN.API.Profile("me").fields(
                    [ "id", "firstName", "lastName", "pictureUrl",
                            "publicProfileUrl" ]).result(function(result) {
                //set the model
                $scope.jsondata = result.values[0];
            }).error(function(err) {
                $scope.error = err;
            });
        };
    });

这是我的按钮和内容链接:

<div>
  <a href="{{jsondata.publicProfileUrl}}">{{jsondata.firstName}}</a>
  <form ng-submit="getCommitData()">
    <input type="submit" value="Get Data">
  </form>
</div>

编辑:解释我是如何在这里做的

4

1 回答 1

6

您需要在检索结果/错误时调用$scope.$apply

angbootApp.controller('AppCtrl', function AppCtrl($scope, $http) {
    $scope.getCommitData = function() {
        IN.API.Profile("me").fields(
                [ "id", "firstName", "lastName", "pictureUrl",
                        "publicProfileUrl" ]).result(function(result) {
            //set the model
            $scope.$apply(function() {
                $scope.jsondata = result.values[0];
            });
        }).error(function(err) {
            $scope.$apply(function() {
                $scope.error = err;
            });
        });
    };
});

角度世界之外的任何东西都不会触发视图的自动刷新。见$apply

于 2013-01-31T12:12:41.270 回答