2016-05-05 4 views
1

Я новичок в angularjs, и я делаю блог в угловатом, но в разделе, где у меня есть список статей, хром-консоль, приготовьте мне это ошибка и список отсутствуют. Backend У меня есть PHP и соединение с db выглядит нормально, потому что, когда я писал, новые данные статьи поступают в базу данных, но похоже, что данные не вернутся к интерфейсу. Я попытался это сделать, но я не могу найти полезную информацию для решения этой проблемы. Спасибо за любой совет!http://errors.angularjs.org/1.4.1/ngRepeat/dupes

http://errors.angularjs.org/1.4.1/ngRepeat/dupes?p0=blog%20in%20blogs&p1=string%3A%3C&p2=%3C

Вот блог интерфейс:

<table class="table table-striped"> 
    <tr> 
     <th>Title</th><th>Description</th><th>Added</th><th>Remove</th> 
    </tr> 
    <tr ng-repeat="blog in blogs"> 
     <td>{{ blog.title }}</td><td>{{ blog.description }}</td><td>{{ blog.added_date }}</td><td><button class="btn btn-danger" ng-click="removeData(blog.id)">x</button></td> 
    </tr> 
</table> 

Вот угловой:

$scope.frmToggle = function() { 
    $('#blogForm').slideToggle(); 
} 

$http.get('./js/popData.php') 
    .success(function(data) { 
     $scope.blogs = data; 
    }) 
    .error(function(err) { 
     $log.error(err); 
    }) 

$scope.pushData = function($params) { 
    $http.post('./js/pushData.php',{'title':$params.title, 'description':$params.description}) 
     .success(function(data) { 
      $scope.blogs = data; 
     }) 
     .error(function(err) { 
      $log.error(err); 
     }) 
} 

$scope.removeData = function($params) { 
    var cnfrm = confirm("Are you sure to delete?"); 
    if(cnfrm) { 
     $http.post('./js/removeData.php', {'id':$params}) 
     .success(function(data) { 
      $scope.blogs = data; 
     }) 
     .error(function(err) { 
      $log.error(err); 
     }) 
    } else { 
     // 
    } 

} 
+0

Я думаю, что вы shoul определите $ scope, прежде чем вы получите запрос на получение $ scope.blogs = []; – Erez

ответ

0

использовать так:

<tr ng-repeat="blog in blogs track by $index"> 
    <td>{{ blog.title }}</td><td>{{ blog.description }}</td><td>{{ blog.added_date }}</td><td><button class="btn btn-danger" ng-click="removeData(blog.id)">x</button></td> 
</tr> 

Для получения подробной информации о простофиль check AngularJs documentation

Надеюсь, это будет полезно для вас.

0

По этой ссылке вы дали:

Чтобы устранить эту ошибку, либо убедиться, что элементы в коллекции имеют уникальный идентификатор или использовать трек синтаксисом, чтобы указать, как отслеживать связь между моделями и DOM.

В приведенном выше примере может быть решена с помощью трек $ индекса, который будет вызвать элементы, которые будут сконструированы по их положению в массиве вместо их значение:

И это может быть ваше решение:

Просто добавьте track by $index.

<tr ng-repeat="blog in blogs track by $index"> 

</tr> 
0

track by $index или другой уникальный идентификатор.