2016-11-20 4 views
0

Я делаю простую программу с .net Core и AngularJs + webApi Мой код Api, как показано ниже Ошибка Js после запуска проблемы - возврат фабрики невозможен. , когда я установил точку останова на $ location.qwets = index.query(); мой «qwets» пуст, длина «qwets» равна 0. Метод get работает при каждом обновлении страницы, но результат ничего.AngularJs is empty list

Я изменил код теперь у меня есть результаты 'qwets', но индекс по-прежнему пуст

Спасибо

// GET: api/values 
    [HttpGet] 
    public IEnumerable<ApplicationUser> Get() 
    { 
     return new List<ApplicationUser> { 
      new ApplicationUser {Id="test", Email="[email protected]" }, 
      new ApplicationUser {Id="tst2",Email="[email protected]" } 

     }; 
    } 

app.js Файл

(function() { 
'use strict'; 

angular.module('saniehhaApp', [ 
    // Angular modules 
    //'ngRoute' 

    // Custom modules 
    "indexService" 
    // 3rd Party Modules 

]); 
})(); 
(function() { 
'use strict'; 

angular 
    .module('saniehhaApp') 
    .controller('indexController', indexController); 

indexController.$inject = ['$location', 'index']; 

function indexController($location, index) { 
    index.query() 
    .$promise.then(function (result) { 
    $scope.qwets = result; 
} 
})(); 
(function() { 
'use strict'; 
var indexService = angular.module('indexService', ['ngResource']); 

indexService.factory('index', ['$resource', 
    function ($resource) { 
    return $resource('/api/index/', {}, { 
     query: 
      { 
       method: 'GET', 
       params: {}, 
       isArray: true 
      } 
    }); 
}]); 
})(); 

и мой файл index.html

<!DOCTYPE html> 
<html ng-app="saniehhaApp"> 
<head> 
<meta charset="utf-8" /> 
<title>SampleTest</title> 

<script src="vendor/angular.min.js"></script> 
<script src="vendor/angular-resource.min.js"></script> 
<script src="vendor/angular-route.min.js"></script> 
<script src="scripts/app.js"></script> 
</head> 
<body ng-cloak> 
<div ng-controller="indexController"></div> 
<h2>list of users</h2> 
<ul> 
    <li ng-repeat="qwet in qwets"> 
     <p> "{{qwet.Id}}" - {{qwet.Email}}</p> 

    </li> 
</ul> 
</body> 
</html> 
+0

Вы можете проверить вкладку сети в панели разработчика и посмотреть, возвращает ли вызов API ожидаемые данные? Можете вставить данные ответа в вопрос? – sabithpocker

+0

То, что вы описываете, является поведением '$ resource' по умолчанию. Запрос является асинхронным, поэтому '$ resource' изначально возвращает пустой массив, который затем заполняется, когда запрос завершается. Если вам не нужно что-то делать немедленно в контроллере, когда поступают данные, это не должно быть проблемой ... наблюдатели в представлении все равно будут обновлять такие вещи, как ng-repeat – charlietfl

+0

Проблема заключается в использовании '$ location', а не' $ scope' – charlietfl

ответ

1

Вы используете $location, а не $scope в контроллере, чтобы назначить свойства, необходимые для просмотра. Вид не видит вещи в $location

Изменения в

function indexController($scope, index) { 
    /* jshint validthis:true */ 
    $scope.qwets = index.query(); 
} 

Как уже упоминалось в комментариях выше, $ ресурс сначала возвращает пустой массив (или объект), который впоследствии заполняется, если фактический запрос завершается и внутренние наблюдатели обновит вид, когда он прибывает

Также плохой конец «DIV» в HTML нг-повтора не в контроллере сНу