0

我遇到的问题是我的 ng-repeat / ng-bind 不会显示 $scope.articles 中的数据。在控制台中,我得到了我期望的数据。我现在制作了一个代码片段,以便更容易发现问题。

var App = angular.module('App', []);
App.controller('WebCtrl', function($scope, $http) {

  $scope.start = [{
    "id": 1,
    "text": "test1"
  }, {
    "id": 2,
    "text": "test2"
  }, {
    "id": 3,
    "text": "test3"
  }, {
    "id": 4,
    "text": "test4"
  }];
  $scope.articles = $scope.start;

  $http.get('/')
    .then(function() {
      $scope.menu = function(id) {
        $scope.articles = $scope.start[id];
        console.log($scope.articles);
      }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!doctype html>
<html ng-app="App">

<head>
  <meta charset="utf-8">
  <title>Todos $http</title>
  <script src="app.js"></script>
</head>

<body ng-controller="WebCtrl">
  <ul>
    <li style="list-style: none">
      <button ng-click="menu(0)">1</button>
      <button ng-click="menu(1)">2</button>
      <button ng-click="menu(2)">3</button>
      <button ng-click="menu(3)">4</button>
    </li>
  </ul>

  <ul>
    <li style="list-style: none" ng-repeat="article in articles">
      {{article.text}}
    </li>
  </ul>
</body>

</html>

4

1 回答 1

0

您的代码以指向数组的文章对象开头。在菜单内部,它被一个对象替换。ng-repeat 迭代它的键。

我想主要的变化是:

$scope.articles = $scope.start.slice(id, id + 1);

var App = angular.module('App', []);
App.controller('WebCtrl', function($scope, $http) {

  $scope.start = [{
    "id": 1,
    "text": "test1"
  }, {
    "id": 2,
    "text": "test2"
  }, {
    "id": 3,
    "text": "test3"
  }, {
    "id": 4,
    "text": "test4"
  }];
  $scope.articles = $scope.start;

      $scope.menu = function(id) {
        $scope.articles = $scope.start.slice(id, id + 1);
        console.log($scope.articles);
      }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!doctype html>
<html ng-app="App">

<head>
  <meta charset="utf-8">
  <title>Todos $http</title>
  <script src="app.js"></script>
</head>

<body ng-controller="WebCtrl">
  <ul>
    <li style="list-style: none">
      <button ng-click="menu(0)">1</button>
      <button ng-click="menu(1)">2</button>
      <button ng-click="menu(2)">3</button>
      <button ng-click="menu(3)">4</button>
    </li>
  </ul>

  <ul>
    <li style="list-style: none" ng-repeat="article in articles">
      {{article.text}}
    </li>
  </ul>
</body>

</html>

于 2015-01-23T12:35:15.377 回答