2014-07-20 2 views
1

Хорошо, мы здесь. У меня есть платформа angularjs, и я хочу вызывать данные в моей области контроллеров из внешних php-файлов. Это оригинальный код.

.controller("morrisChartCtrl", ["$scope", 
     function ($scope) { 
      return $scope.mainData = [{ 
       month: "2013-01", 
       xbox: 294e3, 
       will: 136e3, 
       playstation: 244e3 
      }, { 
       month: "2013-02", 
       xbox: 228e3, 
       will: 335e3, 
       playstation: 127e3 
      }, { 
       month: "2013-03", 
       xbox: 199e3, 
       will: 159e3, 
       playstation: 13e4 
      }, { 
       month: "2013-04", 
       xbox: 174e3, 
       will: 16e4, 
       playstation: 82e3 
      }, { 
       month: "2013-05", 
       xbox: 255e3, 
       will: 318e3, 
       playstation: 82e3 
      }, { 
       month: "2013-06", 
       xbox: 298400, 
       will: 401800, 
       playstation: 98600 
      }, { 
       month: "2013-07", 
       xbox: 37e4, 
       will: 225e3, 
       playstation: 159e3 
      }, { 
       month: "2013-08", 
       xbox: 376700, 
       will: 303600, 
       playstation: 13e4 
      }, { 
       month: "2013-09", 
       xbox: 527800, 
       will: 301e3, 
       playstation: 119400 
      }], $scope.simpleData = [{ 
       year: "2008", 
       value: 20 
      }, { 
       year: "2009", 
       value: 10 
      }, { 
       year: "2010", 
       value: 5 
      }, { 
       year: "2011", 
       value: 5 
      }, { 
       year: "2012", 
       value: 20 
      }, { 
       year: "2013", 
       value: 19 
      }], $scope.comboData = [{ 
       year: "2008", 
       a: 20, 
       b: 16, 
       c: 12 
      }, { 
       year: "2009", 
       a: 10, 
       b: 22, 
       c: 30 
      }, { 
       year: "2010", 
       a: 5, 
       b: 14, 
       c: 20 
      }, { 
       year: "2011", 
       a: 5, 
       b: 12, 
       c: 19 
      }, { 
       year: "2012", 
       a: 20, 
       b: 19, 
       c: 13 
      }, { 
       year: "2013", 
       a: 28, 
       b: 22, 
       c: 20 
      }], $scope.donutData = [{ 
       label: "Download Sales", 
       value: 12 
      }, { 
       label: "In-Store Sales", 
       value: 30 
      }, { 
       label: "Mail-Order Sales", 
       value: 20 
      }, { 
       label: "Online Sales", 
       value: 19 
      }] 
     } 
    ]) 

Вместо встроенных данных в файле JS Я хочу использовать $http, чтобы получить код для каждой области из отдельного файла PHP, который будет генерировать в формате JSON.

Что с этим форматом

.controller("morrisChartCtrl", ["$scope", 
     function ($scope) { 
      return $scope.mainData = $http.get('php/mainData.php').success(function (data) { 
    $scope.mainData = data; 
}), $scope.simpleData = $http.get('php/simpleData.php').success(function (data) { 
    $scope.simpleData = data; 
}), $scope.comboData = $http.get('php/comboData.php').success(function (data) { 
    $scope.comboData = data; 
}), $scope.donutData = $http.get('php/donutData.php').success(function (data) { 
    $scope.donutData = data; 
}) 
     } 
    ]) 

Просто пытается выяснить правильную структуру

+0

http://tutorials.jenkov.com/angularjs/ajax.html –

+0

В чем вопрос? Вы уже знаете о '$ http', читаете документы, просматриваете код учебника, который показывает примеры ... другими словами, некоторые исследования. – charlietfl

+0

Я предполагаю, что я спрашиваю, есть ли у меня встроенный код, какова была бы структура создания $ http-ведомой версии примерно так: – Univelocity

ответ

1

Что вы получаете в результате $http.get() является объектом обещание. Избегайте присвоения значения $http.get() переменной области видимости.

.controller("morrisChartCtrl", ["$scope", 
    function ($scope) { 
    var mainDataPromise = $http.get('php/mainData.php'); 
    mainDataPromise.success(function (data) { 
     $scope.mainData = data; 
    }); 

    var simpleDataPromise = $http.get('php/simpleData.php'); 
    simpleDataPromise.success(function (data) { 
     $scope.simpleData = data; 
    }); 

    var comboDataPromise = $http.get('php/comboData.php'); 
    comboDataPromise.success(function (data) { 
     $scope.comboData = data; 
    }) 

    var donutDataPromise = $http.get('php/donutData.php'); 
    donutDataPromise.success(function (data) { 
     $scope.donutData = data; 
    }); 
    } 
]) 
+0

Когда я заменяю код, я теряю все данные, либо он не возвращает данные или данные не отформатирован правильно, и я пытаюсь понять это. я буквально взял отображаемые данные и поместил их в php-файл и использовал echo 'data'; не уверен, что это правильно или даже если путь к файлу является проблемой – Univelocity

Смежные вопросы