Как добавить данные ответа в объект $ scope для использования в ng-repeat

Привет всем, я пытался получить ответ от метода $http.get и добавить его к объекту $scope, но он указывал undefined. После некоторых исследований и ссылок был найден способ присвоить данные объекту. Но теперь возникла проблема с назначением и использованием в поле зрения с 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;">

Зачем вы сделали этот self = response;?

Kaustubh Khare 11.04.2018 11:58

просто используйте self.localnews = response.data; вместо self = response;. Вашему HTML потребуется ng-repeat="post in $ctrl.localnews" (я думаю, вы используете синтаксис controllerAs, поэтому обратитесь к его области вместо $ctrl)

Aleksey Solovey 11.04.2018 12:00

невозможно назначить его с видом, пожалуйста, помогите с тем же. Найдите обновленный код

Santosh Upadhayay 11.04.2018 12:14

Вы обновили свой HTML?

Kaustubh Khare 11.04.2018 12:38

Извините, каустуб, сэр, пропустил обновленную часть HTML

Santosh Upadhayay 11.04.2018 12:48

@SantoshUpadhayay, вы используете синтаксис controllerAs?

Sravan 11.04.2018 12:54

нет, я напрямую использую имя контроллера в ng-controller

Santosh Upadhayay 11.04.2018 12:57
0
7
126
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте это в своем контроллере

$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>

@Santosh Upadhayay, ты проверил мой ответ? нужна дополнительная помощь?

Sravan 11.04.2018 15:12

Рад помочь вам. :-)

Sravan 12.04.2018 12:53

Другие вопросы по теме