2013-07-31 40 views
7

Bất kỳ suy nghĩ nào về xử lý lỗi 401?Xử lý dữ liệu Ember 401 của

Trong trình khởi tạo ứng dụng, tôi trì hoãn sự sẵn sàng và tìm nạp người dùng hiện tại qua dữ liệu ember. Nếu tôi nhận được 401, ứng dụng sẽ chết và không sử dụng được. Tôi muốn xử lý lỗi này, và sau đó là advancereadiness. Tôi không thể tìm thấy một cách giải quyết cho việc này. Bất kỳ thông tin sẽ được đánh giá cao!

Gist đây: https://gist.github.com/unknpwn/6126462

tôi nhận thấy có một similar topic here, nhưng nó có vẻ là hết hiệu lực.

Trả lời

2

Application.initializer không phải là địa điểm chính xác để đặt logic này. Nó là đồng bộ và mục đích của nó là làm những việc như thêm các đối tượng tùy chỉnh vào thùng chứa IOC, vv Mã này phù hợp hơn trong các móc model của ApplicationRoute.

App.ApplicationRoute = Ember.Route.extend({ 
    beforeModel: function() { 
    return App.User.find({ filter: "authenticated" }); 
    }, 
    setupController: function(controller, model) { 
    controller.set('loggedIn', true); 
    controller.set('currentUser', model);// or some property of that model 
    }, 
    events: function() { 
    error: function(err) { 
     // error handler called in case of an error. 
     // show the error message to user here 
     // or transition to another route 
    } 
    } 
}); 
+0

Tuyệt vời! Tôi không biết trước khiModel tồn tại. Tôi vẫn gặp sự cố khi gặp lỗi 401 dự kiến ​​mặc dù khi tôi cố gắng lấy người dùng đã xác thực từ API của mình và sau đó hiển thị biểu mẫu đăng nhập cho người dùng thay cho nội dung. Chức năng lỗi dường như không bị ảnh hưởng khi 401 trở lại. Có suy nghĩ nào không? – bmherold

+0

Có một số lỗi trong đó hứa hẹn nuốt một số ngoại lệ, điều này có thể là một. Thử tăng 500 lỗi trên máy chủ, xem điều đó có kích hoạt trình xử lý hay không. –

+1

Như của Ember Data v1.0.0-b3, công trình này (với phần bổ sung mà 'sự kiện' phải được đổi tên thành' action', như trước đây đã bị phản đối. –

4

Câu trả lời trước là lỗi thời. Trong phiên bản Ember hiện tại (1+) events không được dùng nữa và bạn nên sử dụng actionsđối tượng (thay vì chức năng).

Ember dụ:

App.ApplicationRoute = Ember.Route.extend({ 
    actions: { 
    error: function(err) { 
     // error handler called in case of an error. 
     // show the error message to user here 
     // or transition to another route 
    } 
    } 
}); 

Ember CLI dụ:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    actions: { 
    error: function(err) { 
     // error handler called in case of an error. 
     // show the error message to user here 
     // or transition to another route 
    } 
    } 
}); 

Với những xử lý hành động lỗi sẽ bong bóng này để thỏa mãn con đường ứng dụng chính nếu bạn không ngăn chặn nó trước trong lộ trình của bạn .

Các vấn đề liên quan