Список ng-repeat в AngularJS не обновляется, когда вызов ajax меняет свое значение
Я полностью сбит с толку. Почему мой ng-repeat не обновляется, когда ajax-вызов меняет свое значение? Я видел много вопросов и ответов здесь, но никто из них не говорил о вызове 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);
});
}
И консоль записала массив, который вернул сервер. Но список в HTML никогда не обновлялся. Если бы я использовал$scope.$apply
, ошибка относительно$digest
может случиться.
Консольный выход
[Object]
0: Object
Attributes: null
Id: "534580464aac494e24000001"
Name: "Registry"
Path: ""
__proto__: Object
length: 1
__proto__: Array[0]
Так что это структураroot
сервер возвращается. Будет ли это проблема типа данных? Потому что этоObject
скорее, чемArray
, Я использую Golang в качестве сервера и используюjson.Marshal()
упаковать данные из MongoDB.
Обновить
function EntryCtrl ($scope, $http) {
$scope.rootEntry = [];
$http.get('read/root').success(function(root) {
$scope.rootEntry = root;
console.log($scope.rootEntry);
});
console.log($scope.rootEntry);
}
Последний вывод[]
, Это вероятно из-за асинхронности $ http, так будет ли это причиной?
окончательный
Я знаю почему. Я использовал плагин под названиемjsTree
, который будет делать некоторые украшения с узлом, поэтому вставленный мною узел будет перезаписан.
Спасибо вам всем.