如何将响应数据添加到$ scope对象以在ng-repeat中使用

时间:2018-04-11 09:57:11

标签: javascript angularjs angularjs-scope angularjs-ng-repeat angularjs-http

大家好,我试图从$http.get方法获取响应,并将其附加到$scope对象,但它表示未定义。经过一些研究和参考,找到了将数据分配给对象的方法。但现在面临的问题是使用ng-repeat在视图中分配和使用。

请求所有人请指导我。

JS:

var self = $scope;
self.localnews = {};

$scope.nearme = function($scope) {

    var lat = localStorage.getItem('lat');
    var lon = localStorage.getItem('lon');
    var request = $http.get("functions/functions.php?activity=getlocalnews&lat="+lat+"&lon="+lon).then(function (response) {
         self = response; 
        return self;
    });
   request.then(function (data) {
        self.localnews= (data.data)
        console.log(self.localnews);
   });

}

HTML视图:

<div ng-repeat="post in ---what goes here??---" class="span12" style="border: 1px solid lightgray;margin:0;position:relative;">

更新:

    var self = $scope;
self.localnews = {};

$scope.nearme = function($scope) {

    var lat = localStorage.getItem('lat');
    var lon = localStorage.getItem('lon');
    var request = $http.get("functions/functions.php?activity=getlocalnews&lat="+lat+"&lon="+lon).then(function (response) {
         self.localnews = response.data; 
        return self.localnews;
    });
   request.then(function (data) {
        self.localnews = (data);
       console.log(self.localnews);
   });

}

在视图中:appctrl是ctrl name。

<div ng-repeat="post in appctrl.localnews" class="span12" style="border: 1px solid lightgray;margin:0;position:relative;">

2 个答案:

答案 0 :(得分:0)

在你的控制器中试试这个

$scope.nearme = function() {
    var lat = localStorage.getItem('lat');
    var lon = localStorage.getItem('lon');
    $http.get("functions/functions.php?activity=getlocalnews&lat="+lat+"&lon="+lon).then(function (response) {
         $scope.localnews = response.data; 
         console.log($scope.localnews);
    });
};

然后像这样使用ng-repeat

<div ng-repeat="post in localnews" class="span12" style="border: 1px solid lightgray;margin:0;position:relative;">

其中localnews必须是一个数组。

答案 1 :(得分:0)

如果您使用controllerAs语法,请使用此

var self = this;
self.localnews = {};

$scope.nearme = function($scope) {

    var lat = localStorage.getItem('lat');
    var lon = localStorage.getItem('lon');
    var request = $http.get("functions/functions.php?activity=getlocalnews&lat="+lat+"&lon="+lon).then(function (response) {
         self.localnews = response.data; 
    });

}

在HTML中:

<div ng-controller="appctrl as app">
    <div ng-repeat="post in app.localnews" class="span12" style="border: 1px solid lightgray;margin:0;position:relative;">
    </div>
</div>

如果您未使用ControllerAs语法:

$scope.localnews = {};

$scope.nearme = function($scope) {

    var lat = localStorage.getItem('lat');
    var lon = localStorage.getItem('lon');
    var request = $http.get("functions/functions.php?activity=getlocalnews&lat="+lat+"&lon="+lon).then(function (response) {
         $scope.localnews = response.data; 
    });

}

在HTML中:

<div ng-controller="appctrl">
    <div ng-repeat="post in localnews" class="span12" style="border: 1px solid lightgray;margin:0;position:relative;">
    </div>
</div>