2015-01-04 93 views
1

我想做一个简单的角度应用程序,它读取JSON数据,但作为回应,我只得到“,”而不是data.Any指向哪里我会出错?我已附加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

除了有效负载(.data)之外,完整响应对象还会传递给具有HTTP状态(.status)和HTTP标头(.headers)的.then处理程序。 – pixelbits

+0

“http://stackoverflow.com/questions/27782567/angular-resource-is-not-working/27782995#27782995”ne指针在这,为什么这不工作? – Aditya

2

差不多。事实上,你会得到'承诺',而不是数据本身。您必须使用该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在一个额外的图层称为数据(即{数据:{“名称:...}})在服务器端 –