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

how to add response data to $scope object to use in ng-repeat

大家好,我试图从 $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 名称。

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

在你的控制器中试试这个

$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 必须是一个数组。

如果您使用 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>