Angularjs Controller返回数据未定义

时间:2016-01-03 00:57:40

标签: angularjs

我试图写下一个控制器,将一个var传递给Angularjs中的Factory ..下面的代码返回(在控制台中)值,但是我没能将它加载到我的html页面。

记录,是的,我是从angularjs开始的。

app.js

var myApp = angular.module('myApp',[]);


myApp.factory('eventData', function ($http, $q) {
    delete $http.defaults.headers.common['X-Requested-With'];
    return {
        getEvent: function (id) {
            var deferred = $q.defer();

            $http({
                method: 'GET',
                url: 'page' + id
            }).
            success(function (data, status, headers, config) {
                deferred.resolve(data);
            }).
            error(function (data, status, headers, config) {
                deferred.reject(status);
            });

            return deferred.promise;
        }
    };
});

myApp.controller('AngularJSCtrl',
    function FeederController($scope, eventData) {
        $scope.data = [];
        for (var i = 0; i < 10; i++) {
            eventData.getEvent(i).then(
                function (data) {
                    $scope.data = data;
                    console.log($scope.data);
                },
                function (statusCode) {
                    console.log(statusCode)
                });
        }
    }
);

page.html中

<div ng-controller="AngularJSCtrl">
        <div ng-repeat="patient in patients">
            <businesscard>{{patient.name}}</businesscard>
        </div>
    </div>

1 个答案:

答案 0 :(得分:1)

问题解决了。我已经搜索了一段时间,直到做对了。

感谢@Claies和Brad Barrow提示:)

<强> app.js

var myApp = angular.module('myApp',[]);
myApp.factory('patientsData', function ($http) {

    delete $http.defaults.headers.common['X-Requested-With'];

    return {
        getPatients: function () {
            return $http({
                url: 'http://localhost/ucamradio/php/tst.php?campusId=1',
                method: 'GET'
            })
        }
    }

});
myApp.controller('AngularJSCtrl', function($scope, patientsData){

    $scope.patients = [];

    var handleSuccess = function(data, status) {
        //$scope.patients = data;
        $scope.patients.push(data);
        console.log($scope.patients);
    };

    patientsData.getPatients().success(handleSuccess);

});

<强> page.html中

<div ng-controller="AngularJSCtrl">
        <div ng-repeat="patient in patients">
            <businesscard>{{patient.name}}</businesscard>
        </div>
        <!--   
        <div ng-repeat="patient in patients ">
            <businesscard>{{patient.id}}</businesscard>
        </div> -->
    </div>