2017-06-21 29 views
7

tôi có 2 tiểu bang ở coffeescript ...Có cách nào để giải quyết một lời hứa trước bất kỳ phụ giải quyết trong AngularUI Router

stateProvider.state 'test', 
    ... 
    resolve: 
     user: (LongRunning)-> 
      LongRunning.authenticate().then -> 
       console.log("We are authenticated!") 

stateProvider.state 'test.child', 
    ... 
    resolve: 
     other: (AfterAuth)-> 
      AfterAuth.soSomethingWithAuth().then -> 
       console.log("We are done!") 

Tất nhiên điều này không làm việc vì quyết tâm con được khởi công trước phương thức xác thực của phụ huynh đã được giải quyết. Điều này có nghĩa là hàm thứ hai sẽ không được xác thực và khiến toàn bộ trạng thái thất bại.

Bây giờ, nó không nhất thiết phải là một phần của đường dẫn trạng thái nhưng nó cần phải được hoàn thành đầy đủ vào thời gian các hàm phân giải được gọi.

Làm cách nào để đảm bảo chức năng từ cha mẹ được giải quyết hoàn toàn trước khi gọi phương thức ở trẻ em?

Bad (?) Giải pháp

Một câu trả lời tôi đã có thể đưa ra là sử dụng quá trình bootstrap bằng tay. Tuy nhiên, điều này là tẻ nhạt vì tôi sẽ cần phải rewire tất cả các dịch vụ của tôi. Có anyway tôi có thể làm điều đó bên trong góc?

Trả lời

5

Bạn có sử dụng AngularUI Router cho Angular 2 hoặc AngularJS không? Tôi nghĩ rằng đó là AngularJS trên thực tế là bạn sử dụng coffeescript và AngularUI Router. Đây là thẻ góc không AngularJS.

Dù sao trong AngularUI Router, một trình phân giải có thể tùy thuộc vào một trình phân giải khác. Một cái gì đó như thế:

function firstStep($stateParams, resolveStatus) { 
    return $q.resolve(); 
} 

resolve: { 
    firstStep: firstStep, 
    secondStep: ['firstStep', function (firstStep) { 
    ... 
    }] 
} 
+0

Tôi sẽ thêm rằng bạn có thể sử dụng tiêm phụ thuộc trong các tuyến đường con sử dụng tất cả các thông số đã giải quyết từ tuyến đường mẹ. Trong ví dụ của bạn nó trong cùng một quyết tâm - nhưng nó không phải như vậy. – hilnius

+0

Phải nhưng theo mặc định, các quyết định gốc không được hoàn tất trước khi chuyển sang @hilnius. Vì vậy, những người trong cha mẹ không được bảo đảm để được giải quyết trước khi những đứa trẻ được gọi. Nếu điều này đảm bảo rằng đó là trường hợp (thêm dựa vào biến) hoạt động trên trẻ em này nên được ok. – Jackie

+0

Nếu có 30 bước, tôi phải thêm điều này vào mỗi bước? Có cách nào để nói 'chạy bất kỳ bước nào kế thừa từ điều này sau firstStep' – Jackie

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