1

LinkedIn API にアクセスする Angular.js を使用してアプリを構築しています。API を呼び出すと、モデルがすぐに更新されず、画面で別の変更を行った後に発生します。たとえば、API 呼び出しをボタンにバインドしましたが、データを更新するには画面を 2 回押す必要があります。これは私のコントローラーです:

    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 に答える