AngularJs. Данные, загруженные через ajax, не отображаются в представлении

) У меня возникли проблемы с рендерингом ajax-ответа в View.

Есть мой взгляд

<div id="content" layout:fragment="content" ng-app="Messages">
 <div ng-repeat="tweet in tweets" ng-model="tweets">
 <span> </span> <span>{{tweet.createdAt}}</span>
 <span>{{tweet.network}}</span> <span>{{tweet.text}}</span>
 </div>
 <button type="button" ng-controller="getMoreTweets" ng-click="onloadTweets($event)">Get
 more tweets</button></div>

И это мой контроллер

var app = angular.module("Messages", []);
app.controller('getMoreTweets', function($http, $scope, $element) {
 $scope.tweets = [];
 $scope.onloadTweets = function(e) {
 var buttonElement = angular.element(e.target);
 var socialId = buttonElement.prev().prev().children().children().attr(
 "data-id");
 var dataString = {
 'socialId' : socialId
 };
 $http({
 method : 'GET',
 url : "/infoboard/getMoreTweets",
 params : dataString
 }).success(function(data, status, headers, config) {
 $scope.tweets = data;
 console.log(data);
 console.log($scope.tweets);
 console.log("All correct");
 }).error(function(data, status, headers, config) {
 console.log("Something went wrong");
 });
 };
 $scope.isSelected = function(e) {
 return $scope.selected.indexOf(angular.element(e.target)) >= 0;
 };
});

Данные поступают с сервера, как и должно быть, но не отображаются в представлении (что я делаю неправильно?

1 ответ

Когда вы используете твиты в директиве ng-repeat, твиты должны существовать в текущей области. Вы объявляете твиты в области контроллера, но область управления ограничена элементом кнопки. Таким образом, объем ng-repeat ничего не знает о твитах. Поместите директиву ng-controller на обертку div ng-repeat HTML:

<div id="content" layout:fragment="content" ng-app="Messages" ng-controller="getMoreTweets"> </div>

licensed under cc by-sa 3.0 with attribution.