2014-04-20 15 views
6

Tôi rất mới đối với cả phát triển web và AngularJS. Tôi đang cố gắng để viết một trang web sẽ tự động cập nhật thông tin của nó dựa trên các tập tin JSon ngồi trên máy chủ của tôi. Tôi có thể lấy dữ liệu json nhưng tôi không thể phân tích dữ liệu được. Tôi đã xác thực dữ liệu json chỉ để đảm bảo rằng tôi đã viết chính xác, nhưng bất cứ khi nào tôi hiển thị nó trên trang web chỉ hiển thị dưới dạng một chuỗi. Tôi không thể truy cập các thành viên cá nhân. Nhà máy và bộ điều khiển của tôi ở bên dưới. Mọi sự trợ giúp sẽ rất được trân trọng!!

var MyController = function($scope, $log, MyFactory) { 
    $scope.notes =[]; 

function init() { 
    MyFactory.getNotes() 
     .success(function(notes){ 
      $scope.notes = JSON.parse(notes); 
     }) 
     .error(function(data, status, headers, config) { 
       $log.log(data.error + ' ' + status); 
      }); 
} 

    init(); 

angular.module('MyApp') 
    .controller('MyController', MyController); 
}; 

Và nhà máy:

var MyFactory = function($http) { 
    var factory = {}; 
    factory.getNotes = function() { 
     return $http.get('/ci/data.json'); 
    }; 
return factory; 
}; 

angular.module('MyApp').factory('MyFactory', 
            MyFactory); 

Tôi thừa nhận mã và câu hỏi là thô nhưng tôi đã chỉ mới bắt đầu. Bất kỳ trợ giúp bổ sung nào về kiến ​​trúc và kiểu dáng cũng sẽ được đánh giá cao! Cảm ơn trước!

+0

Bạn có thể đưa ra ví dụ về phản ứng json không? – rom99

+0

Ví dụ: [{"name": "matt", "age": 32}, {"name": "dave", "age": 29}]. Nó sẽ in ra như thế. Nếu tôi gửi nó đến $ scope thì thử truy cập tên, nó sẽ hoạt động. Nó sẽ chỉ in ra toàn bộ chuỗi. –

+0

Bạn có báo giá xung quanh toàn bộ điều trong tệp data.json không? Điều đó sẽ làm cho toàn bộ điều chỉ là một chuỗi json tôi đoán. – rom99

Trả lời

6
  1. Bạn không cần phải phân tích cú pháp câu trả lời là json. Nếu sourcefile cho bạn json hợp lệ, angular biết json của nó.

  2. Trong bộ điều khiển của bạn, hãy thử console.log($scope.notes). Nếu sử dụng google chrome, bạn nhận được kết quả json được in khá đẹp trong bảng điều khiển mà bạn biết rằng factory của bạn đang hoạt động.

  3. Sử dụng góc cạnh forEach để lặp qua kết quả để làm điều gì đó với nó.

    angular.forEach($scope.notes, function(note) { 
        console.log(note); 
    }); 
    
0

Không cần phân tích .. chỉ cần sử dụng $ scope.notes của bạn trong vòng lặp bạn

<div ng-repeat="note as notes"> 
    <p>{{name}}</p> 
    <p>{{age}}</p> 
</div> 
0

Bạn có thể sử dụng để phân tích kết quả angular.fromJson(jsondata) http. Trước đây tôi đã nhận được dữ liệu json không hợp lệ từ phản hồi http, một số ký tự json đã có trong dữ liệu json vì vậy tôi đã phân tích cú pháp bằng cách sử dụng nó và nó làm việc cho tôi, nó xóa tất cả các ký tự không hợp lệ đó khỏi dữ liệu json của tôi.

0

Đối với những người bạn của những người vẫn có thể cần điều này, câu trả lời Suresh là đi đúng hướng nhưng mã đó là hoàn toàn sai lầm (ít nhất là cho góc 1)

Vì vậy, trong khi cố gắng để phân tích dữ liệu như:

{"1":{"id":"1","owner":"1","name":"Mearns Server","description":"This is my test server.","version":"1.11","type":"0","ip":"test.com","port":"25565"},"2":{"id":"2","owner":"1","name":"Test Server","description":"This is my test server.","version":"1.0","type":"2","ip":"test.com","port":"6969"} 

tôi đã sử dụng các yêu cầu sau đây GET:

.controller('serversController', function($scope, $http){ 
    $http.get("/dashboard/api/?action=getServers&key=") 
    .then(function(response){ 
    $scope.servers = response.data; 
    }); 
}); 

và HTML sau:

<div ng-repeat="server in servers"> 
    <p>{{server.id}}</p> 
    <p>{{server.name}}</p> 
    <p>{{server.version}}</p> 
</div> 
Các vấn đề liên quan