0

背景:我正在开发一个“事件目录”网站。

我使用 json 编码创建了一个 php 页面,以将我的数据写为 json 文件。对于那件事我没有任何疑问。一切正常。我的意思是我可以毫无问题地循环显示我的主页中的数据。

当我想访问那里的个人详细信息时,问题就开始了。

我的变量只是无法识别我希望她确定范围的数据。这很奇怪,因为我在另一个项目上使用了相同的方法,但无论如何效果很好。这是我的代码,我希望我的范围采用(例如)我的标题值,我做错了什么或者我该如何进行过度?

真的,非常感谢您在对 Google 进行大量研究和数小时思考我的问题之后所花费的时间。在这里发布我的问题真的是我最后的选择。然而,这是我的第一次。

我尝试使用 $rootScope & $routeParams 而不是 $scope 但这也不起作用。还尝试使用 $location 和 ngSanitize,但我不明白我在做什么,我从未使用过。我已经控制台记录了曾经存在的所有内容,哈哈。

我不确定我是否必须运行(参见最后一部分)这些元素,但我尝试了很多东西。

这是我的 Google Chrome 控制台返回的错误:

TypeError:无法读取新的未定义的属性“标题”(myRoutes.js:350)

PS:第 350 行是“$scope.title = $scope.events[$scope.eventID].title;”所在的行 是写的。

这是我的 Firefox 控制台返回的错误:

类型错误:“$scope.events[$scope.eventID] 未定义”myRoutes.js:350 Angular 20

 <div ng-view="" class="ng-scope">

注意:我的 console.log($scope.eventID) 正确返回了我想要的数字。但是对于标题和所有内容,他只是说它是未定义的。

我几乎看不出问题出在哪里,但我只是不知道如何解决它。再次感谢您的宝贵时间。已经问了很多关于json数据显示错误的问题,但是我使用的方法无法解决这种情况。

PS:我知道 AngularJS 已经过时了。我稍后会学习 Angular,但不能正确知道。

.controller('detailsCtrl', function($scope, $http, $rootScope, $routeParams){
    $http.get('partials/allEvents.php') // On récupère le contenu du fichier php
    .then(function(res){
       $scope.events = res.data;
    });
    $scope.eventID = $routeParams.eventID;
    console.log($scope.eventID);
    $scope.title = $scope.events[$scope.eventID].title;
    $scope.image = $scope.events[$scope.eventID].image;
    $scope.area = $scope.events[$scope.eventID].area;
    $scope.city = $scope.events[$scope.eventID].city;
    $scope.theme = $scope.events[$scope.eventID].theme;
    $scope.type = $scope.events[$scope.eventID].type;
    $scope.beginDate = $scope.events[$scope.eventID].beginDate;
    $scope.endDate = $scope.events[$scope.eventID].endDate;
    $scope.numberOfVisitors = $scope.events[$scope.eventID].numberOfVisitors;
    $scope.shortBio = $scope.events[$scope.eventID].shortBio;
    $scope.longBio = $scope.events[$scope.eventID].longBio;
    console.log($scope.title);
    //$scope.title = $scope.events[$scope.eventID].title;
    //$scope.title = $scope.events[$scope.eventID].title;
})

//这是我试图显示数据的页面:

<div ng-controller="detailsCtrl">
    <h1>{{title}}</h1>
    <h1>{{events.title}}</h1>
    <h1>{{event.title}}</h1>
</div>       

//这是我的代码,在我的 $routeProvider 之前(不用担心):

var leCalendrierDuGeek = angular.module('leCalendrierDuGeek', ['ngRoute']);
leCalendrierDuGeek.run(function($rootScope, $http){
  //array initialised
    $rootScope.events=[];

    $http.get("partials/allEvents.php")
    .then(function(response) {
        $rootScope.events = response.data;
        console.log($rootScope.events);
      });
});
4

1 回答 1

0

GET 请求的回调将在响应可用时异步调用:

.then(function(res){
   $scope.events = res.data;
   // here you can get any property values from `$scope.events`
});
// here `$scope.events` is still undefined, so you get that console error
于 2019-08-25T17:39:43.957 回答