Модель AngularJS не загружает данные в поле зрения

0

Поэтому я следую очень базовому учебнику AngularJS, найденному здесь.

Я дошел до шага 10, но на мой взгляд ничего не отображается. Что дает?

Вот содержимое index.html:

<html>
  <head>
    <title>My Angular App!</title>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
    <script src="app.js"></script>
  </head>
  <body ng-app="flapperNews" ng-controller="MainCtrl">
    <div ng-repeat="post in posts">
        {{post.title}} - upvotes: {{post.upvotes}}
    </div>
  </body>
</html>

Вот комментарии app.js:

angular.module('flapperNews', [])
.controller('MainCtrl', [
'$scope',
function($scope){
  $scope.test = 'Hello world!';
}]);

$scope.posts = [
  {title: 'post 1', upvotes: 5},
  {title: 'post 2', upvotes: 2},
  {title: 'post 3', upvotes: 15},
  {title: 'post 4', upvotes: 9},
  {title: 'post 5', upvotes: 4}
];
Теги:

1 ответ

3
Лучший ответ

проблема в том, что вы пытаетесь объявить $scope.posts вне любого углового контекста, а именно контроллера MainCtrl.

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>My Angular App!</title>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-app="flapperNews" ng-controller="MainCtrl">
    <div ng-repeat="post in posts">
        {{post.title}} - upvotes: {{post.upvotes}}
    </div>
  </body>

</html>

JS

angular.module('flapperNews', [])
  .controller('MainCtrl', [
    '$scope',
    function($scope) {
      $scope.test = 'Hello world!';

      // We are inside a controller here:
      $scope.posts = [{
        title: 'post 1',
        upvotes: 5
      }, {
        title: 'post 2',
        upvotes: 2
      }, {
        title: 'post 3',
        upvotes: 15
      }, {
        title: 'post 4',
        upvotes: 9
      }, {
        title: 'post 5',
        upvotes: 4
      }];
    }
  ]);

http://plnkr.co/edit/ybJgc3?p=preview

  • 0
    Блин, я думал, что это существует в глобальном контексте. Это сработало, и я приму через семь минут
  • 0
    Angular на самом деле пытается помешать вам создать что-либо в глобальном контексте. Глобальное пространство имен должно быть чистым, а все, что вам нужно для доступа в других компонентах, должно быть введено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню