2016-06-17 123 views
0

我想問你一些幫助。當我嘗試我的前端通信在角與控制檯上的後端(PHP)的一部分,只要我離開了服務,我得到一個空數組JSON獲取角度和PHP

控制器:

angular.module('pageModule') 
.controller('pageController', ['$scope', 'homeService', 'pageService', function($scope, homeService, pageService){ 

    $scope.pages = new Array(); 

    pageService.getPage().then(function(response){ 
    var elenco = response.data; 
    console.log(elenco); 
    for(var i = 0; i < elenco.length; i++) 
     $scope.pages.push(elenco[i]); 
    }); 
    console.log($scope.pages); 
}]); 

這是服務:

angular.module('pageModule') 
.service('pageService', function($http){ 
    function getPage(){ 
    return $http.get('../angCMS/server/php/page.php'); 
    } 
    return{ 
    getPage: getPage 
    }; 
}); 

這是PHP的一部分:

<?php 
require_once 'core/class.core.php'; 
$page = new angCMS(); //this function connected the DB 
if($_SERVER['REQUEST_METHOD'] == 'GET'){ 
    header('Content-type: application/json'); 
    echo json_encode($page->getPage()); 
} 

?> 

在控制檯:

pageModuleController.js:12 [] 
pageModuleController.js:8 Object {id: "1", title: "prova", content: "prova"} 
 

回答

0

至於角度來講包括。然後回調內部的console.log語句。因爲當.then回調函數結束時它會失去它的範圍。

angular.module('pageModule') 
    .controller('pageController', ['$scope', 'homeService', 'pageService', function($scope, homeService, pageService){ 

     $scope.pages = new Array(); 

     pageService.getPage().then(function(response){ 
     var elenco = response.data; 
     console.log(elenco); 
     for(var i = 0; i < elenco.length; i++){ 
      $scope.pages.push(elenco[i]); 
} 
console.log($scope.pages); 
     }); 

    }]); 
+0

但這樣ng-repeat =「頁面中的頁面」不起作用,我怎麼修復? – faserx

0

你的代碼沒有問題。 $ http.get總是執行異步。這就是你在服務的最後一行有一個空數組。 $ http檢索到php頁面響應後,會調用你的函數。然後(...)和feds $ scope.pages

+0

但這樣ng-repeat =「頁面中的頁面」不起作用,我該如何解決? – faserx