A lista ng-repeat no AngularJS não é atualizada quando uma chamada ajax altera seu valor

Estou totalmente confuso. Por que minha ng-repeat não é atualizada quando há uma chamada ajax alterando seu valor? Eu já vi muitas perguntas e respostas aqui, mas nenhuma delas falou sobre chamada ajax.

HTML:

<div class="row" ng-controller="EntryCtrl">
    <div id="treeview" class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
        <ul>
            <li ng-repeat="root in rootEntry">{{root.Name}}</li>
        </ul>
    </div>
</div>

JS:

function EntryCtrl ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('read/root').success(function(root) {
        $scope.rootEntry = root;
        console.log($scope.rootEntry);
    });
}

E o console registrou uma matriz que o servidor retornou. Mas a lista em html nunca foi atualizada. Se eu usasse$scope.$apply, um erro relativo$digest aconteceria.

Saída do console

[Object]
    0: Object
        Attributes: null
        Id: "534580464aac494e24000001"
        Name: "Registry"
        Path: ""
        __proto__: Object
        length: 1
    __proto__: Array[0]

Então é a estrutura deroot o servidor retorna. Seria o problema do tipo de dados? Porque éObject ao invés deArray. Eu uso Golang como servidor e usojson.Marshal() para empacotar os dados do MongoDB.

Atualizar

function EntryCtrl ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('read/root').success(function(root) {
        $scope.rootEntry = root;
        console.log($scope.rootEntry);
    });
    console.log($scope.rootEntry);
}

A última saída é[]. Provavelmente, devido à assíncrona de $ http, será esse o motivo?

Final

Eu sei porque. Eu usei um plugin chamadojsTree, que fará algumas decorações com o nó, para que o nó inserido seja substituído.

Obrigado a todos.

questionAnswers(1)

yourAnswerToTheQuestion