2012-08-24 24 views
11

Tôi bắt đầu chơi với Angular.js gần đây, và có một dự án demo hoạt động khá tốt. Tuy nhiên, khi tôi cố gắng tải dữ liệu từ một dịch vụ web phụ trợ so với chỉ một mảng mã hóa cứng, tôi bắt đầu bị treo lên. Cụ thể là các trang dường như không ràng buộc dữ liệu đúng cách sau khi tôi thiết lập phạm vi $ bằng $ .getJSON(). Done (...). Thay vì chỉ gán một giá trị cho $ scope sau khi .getJSON được thực hiện, tôi có nên thực hiện nó ở một nơi khác/khác không? Tôi tìm kiếm cao và thấp và thực sự không thể tìm thấy bất kỳ ví dụ tốt của thats góc kéo dữ liệu intial từ một phụ trợ.

Cảm ơn trước vì đã giúp bạn với điều này!

Trả lời

13

Vì bạn đang cố gắng cập nhật $scope ngoài Góc nên bạn sẽ phải thực hiện thay đổi mô hình của mình bằng cách sử dụng phương pháp $apply trên phạm vi.

Có lẽ cái gì đó như:

$.getJSON('ajax/test.json', function(data) { 
     $scope.$apply(function(){ 
      $scope.modelData = data; 
     }); 
    }); 

Cách ưa thích để truy cập vào một backend với AngularJS sẽ được sử dụng dịch vụ $http hoặc $resource ở vị trí của jQuery. Bạn sẽ không phải sử dụng $scope.$apply bạn chỉ có thể cập nhật trực tiếp $scope.modelData của mình.

This post có số tốt fiddle cập nhật mô hình ngoài mã Angular.

+0

này là hoàn hảo cảm ơn! Mặc dù ví dụ của bạn dường như hoạt động hoàn hảo và tôi thích rằng bạn đã chỉ ra việc sử dụng vì điều đó đã giúp tôi hiểu cách hoạt động - tôi có lẽ chỉ nên sử dụng http hoặc tài nguyên vì những thứ đó dường như được ưa thích hơn bạn nói. Cảm ơn một lần nữa! – jkat98

0

hoặc thay vì gói với áp dụng, chỉ cần gọi nó vào cuối của hàm callback như

$.getJSON('ajax/test.json', function(data) { 
    $scope.data = data;   
    $scope.$apply(); 
}); 
Các vấn đề liên quan