2015-01-04 3 views
1

Я пытаюсь сделать простое угловое приложение, которое считывает данные json, но в ответ я получаю только «,» а не данные. Все указатели, в которых я ошибаюсь? Я приложил файл index.html и abc.json, чтобы я сохранил сервер PFB код.Угловой Js не работает Json

HTML:

<body ng-app="sampleApp" ng-controller="ctrl1"> 
    Name:<input type="text" ng-model="name"> 
    <ul> 
     <li ng-repeat="student in students | filter:name">{{student.name +","+student.empNo}</li> 
    </ul> 
    Name:<input type="text" ng-model="newname"> 
    EmpNo:<input type="text" ng-model="newemp"> 
    <input type="button" value="AddMe" ng-click="add()"/> 
    <div> 
     <div ng-view></div> 
    </div> 

Javascript:

var x=angular.module('sampleApp',[]) 
.factory("simpleFactory",function($http){ 
    var factory={}; 
    factory.getStudents=function(){ 
     return $http.get("abc.json"); 
    } 
     return factory; 
    }) 
    .controller("ctrl1",function($scope,simpleFactory){ 
     $scope.students=simpleFactory.getStudents(); 
     $scope.add=function(){ 
     $scope.students.push(
      { 
      name:$scope.newname,empNo:$scope.newemp 
      }  
     ) 
    } 
}) 

abc.json

[   
    {"name":"jack","empNo":"1"}, 
    {"name":"Red","empNo":"2"}, 
    {"name":"Jill","empNo":"3"} 
] 

ответ

2

getStudents является асинхронным. Вы должны получить и назначить студентов через обработчик обратного вызова.

.factory("simpleFactory",function($http){ 
      var factory={}; 
      factory.getStudents = $http.get("abc.json"); 
      return factory; 
     }) 
     .controller("ctrl1",function($scope,simpleFactory){ 
      simpleFactory.getStudents().then(function(result) { 
        $scope.students= result.data; 
      }); 
      ...    
     }) 
+0

ya его работа, но почему result.data не только результат? – Aditya

+0

полный объект ответа передается обработчику .then, который имеет статус HTTP (.status) и HTTP-заголовок (.headers), в дополнение к полезной нагрузке (.data). – pixelbits

+0

«http://stackoverflow.com/questions/27782567/angular-resource-is-not-working/27782995#27782995« Не указывает на это, почему это не работает? – Aditya

2

Почти справа. getStudents фактически возвращает вам «обещание», а не данные. Вы должны использовать этот Promise для получения ваших данных:

simpleFactory.getStudents().then(function(data) { 
    $scope.students=data 
    // $scope.students=data.data  // you may need this given your feedback 
}); 
+0

Его еще не работает, result.data работает:/ – Aditya

+0

Похоже, вы обертываете свой json дополнительным слоем, называемым данными (например, '{data: {" name: ...}} ') на стороне сервера –

Смежные вопросы