Câu hỏi mục đích sử dụng trạng thái trừu tượng là gì?


Tôi đang làm việc trên dự án AngularUI hướng dẫn của tôi. Tôi đọc tất cả về các trạng thái, trạng thái lồng nhau và trạng thái trừu tượng. Vấn đề là tôi không thể hiểu tại sao và khi nào tôi nên sử dụng trạng thái trừu tượng?


15
2017-09-06 11:56


gốc




Các câu trả lời:


Trạng thái trừu tượng có nghĩa là trạng thái bạn viết không thể truy cập được   trực tiếp. Trạng thái trừu tượng vẫn cần riêng cho con cái của họ để cắm vào.

Nó được gọi khi chúng ta tải trạng thái của nó. Bạn có thể sử dụng trạng thái trừu tượng để xác định một số mẫu ban đầu của trang, giả sử bạn có thể lấy ví dụ về trang web truyền thông xã hội bất kỳ, nơi bạn muốn hiển thị tiểu sử người dùng và trang xã hội. Cho rằng bạn có thể có một abstract nhà nước, mà sẽ có url: "" & có bố cục cơ bản của trang của bạn. Như header, content & footer lượt xem được đặt tên. header & footer tên được xem sẽ được điền bởi trạng thái trừu tượng và sau đó con sẽ xác định nội dung phụ thuộc vào mô-đun nào được hiển thị. /profile sẽ hiển thị userProfile.html & /social sẽ hiển thị trang xã hội của người dùng social.html.

Cấu hình

app.config(function($stateProvider){
  $stateProvider.state("app":
  {
    url: "", //you can have the default url here..that will shown before child state url
    abstract: true,
    views: {
       '': {
          templateUrl: 'layout.html',
          controller: 'mainCtrl'
       },
       'header': {
          templateUrl: 'header.html'
       },
       'footer': {
          templateUrl: 'footer.html'
       }
    },
    resolve: {
       getUserAuthData: function(userService){
           return userService.getUserData();
       }
    }

  })
  .state("app.profile": {
      'content@app': {
          templateUrl: 'profile.html',
          controller: 'profileController'
      }
  })
  .state("app.social": {
      'content@app': {
          templateUrl: 'social.html',
          controller: 'socialController'
      }
  })
})

Tính năng chính khác của abstract là bạn có thể có giải pháp chung về nó, cung cấp dữ liệu tùy chỉnh được thừa kế thông qua dữ liệu để sử dụng bởi các trạng thái con hoặc trình xử lý sự kiện. Ngoài ra bạn có thể có OnEnter & OnExit trên đó để đảm bảo mọi thứ trước khi tải state và trong khi rời khỏi state


19
2017-09-06 12:50





Nếu bạn không muốn một trạng thái có thể được nhấn \ chuyển đổi sang thì bạn có thể làm cho nó trở thành một trạng thái trừu tượng. Thí dụ

\A
\A.B
\A.B.C

Nếu bạn không muốn người dùng chỉ cần truy cập \A, bạn nên làm cho nó abstract.


5
2017-09-06 12:08





Về cơ bản, các trạng thái trừu tượng giúp bạn di chuyển chức năng phổ biến từ các trạng thái khác nhau sang trạng thái trừu tượng gốc.

Ví dụ điển hình là trạng thái xử lý việc tải tên người dùng, cài đặt bản địa hóa, dữ liệu meta. Bạn không muốn người dùng chuyển hướng đến trạng thái sẽ chỉ tải trạng thái đó. Bạn muốn điều đó luôn được tải, khi được chuyển hướng đến mọi trạng thái

/session sẽ trừu tượng nhưng /session/main, /session/detail sẽ không. Thông qua các phụ thuộc, dữ liệu phiên sẽ được tải khi đi tới cả hai main và detail nói nhưng bạn không muốn người dùng truy cập session tiểu bang.


3
2017-09-06 12:19





Trạng thái trừu tượng

Có những tình huống mà chúng tôi cần phải có một số thông tin phổ biến có sẵn ở một số tiểu bang. Với mục đích này, UI-Router cung cấp khả năng xác định các trạng thái trừu tượng. Các trạng thái trừu tượng có thể có trạng thái con nhưng chúng không thể được kích hoạt mà không được chuyển đổi sang. Trạng thái trừu tượng được kích hoạt hoàn toàn khi một trong các trạng thái con của nó được kích hoạt. Điều này rất hữu ích khi: chúng ta cần thêm một url vào tất cả các url trạng thái con chúng ta cần chèn một khuôn mẫu với giao diện ui-view riêng của nó mà các trạng thái con sẽ điền vào chúng ta cần cung cấp các phụ thuộc được giải quyết (thông qua giải quyết) để được sử dụng bởi các trạng thái con chúng tôi cần cung cấp dữ liệu trạng thái tùy chỉnh được kế thừa để các trạng thái hoặc sự kiện con sử dụng Các trạng thái trừu tượng được định nghĩa xác định khóa trừu tượng trong đối tượng cấu hình trạng thái được đặt thành true.

$stateProvider

.state('home', {

    abstract: true,

    templateURL: 'home.html'

})

0
2017-09-06 12:17