2015-10-14 13 views
7

Tôi đang học về góc cạnh và đã cố gắng tải động một đoạn tệp HTML vào ngăn nội dung của tab.Cách tải trạng thái ui-router vào nội dung của các tab ui-bootstrap

Trong this linked plunker Tôi đã tạo ra một mô-đun góc để cấu hình các bang

var app = angular.module('Plunker', ['ui.router', 'ui.bootstrap']) 

    app.config([ 
     '$stateProvider', 
     '$urlRouterProvider', 
     function ($stateProvider, $urlRouterProvider) { 

      $stateProvider   
       .state("tab1", { url: "/tab1", templateUrl: "tab1.html" }) 
       .state("tab2", { url: "/tab2", templateUrl: "tab2.html" }) 
       .state("tab3", { url: "/tab3", templateUrl: "tab3.html" }); 
      $urlRouterProvider.otherwise('/'); 
     }]); 

    app.controller("tabsController", function ($rootScope, $scope, $state) { 

     $scope.tabs = [ 
      { title: "My Tab 1", route: "tab1", active: true }, 
      { title: "My Tab 2", route: "tab2", active: false }, 
      { title: "My Tab 3", route: "tab3", active: false }, 
     ]; 

     $scope.go = function (route) { 
      $state.go(route); 
     }; 

     $scope.active = function (route) { 
      return $state.is(route); 
     }; 

     $scope.$on("$stateChangeSuccess", function() { 
      $scope.tabs.forEach(function (tab) { 
       tab.active = $scope.active(tab.route); 
      }); 
     }); 
    }); 

và trong cơ thể index.html giao ui-xem một tên để liên kết nó với nhà nước/đường

<body ng-app="Plunker"> 
    <div ng-controller="tabsController"> 
     <uib-tabset> 
      <uib-tab ng-repeat="tab in tabs" heading="{{tab.title}}" active="tab.active" disable="tab.disabled"> 

       <div ui-view="{{tab.route}}"></div> 

      </uib-tab> 
     </uib-tabset> 
    </div> 
    </body> 

Mỗi tab phải có nội dung đến từ đoạn tệp html tương ứng tab1.html, tab2.html hoặc tab1.html. Nhưng tôi không thể làm cho nó hoạt động được. Bất kỳ sự giúp đỡ nào trong công việc này sẽ được đánh giá cao.

+0

nếu bạn muốn có một tab p er tuyến đường, bạn không cần '' chỉ cần sử dụng tab css và liên kết thường xuyên – charlietfl

+0

@charlietfl cảm ơn tôi sẽ giữ cho rằng trong tâm trí. – Kickaha

Trả lời

8

Bạn muốn có một phần cho mỗi tab. Đối với điều đó, lượt xem có tên tính năng của ui-router có thể giúp bạn. Bạn sẽ không thay đổi trạng thái, nhưng có nội dung trên các chế độ xem chuyên dụng cho phép bạn giữ cho mẫu bố cục sáng và sắp xếp mã của bạn một cách độc đáo. Hơn nữa, bạn có thể sử dụng lại các mẫu tab ở nơi khác.

định nghĩa Nhà nước nơi các thành phần tabset cư trú:

$stateProvider 
    .state('example', { 
     url: '/example', 
     views: { 
      "tab1": { templateUrl: "tab1.html" }, 
      "tab2": { templateUrl: "tab2.html" }, 
      "tab3": { templateUrl: "tab3.html" }, 
    } 

Tabset định nghĩa:

<uib-tabset> 
    <uib-tab ng-repeat="tab in tabs" heading="{{tab.title}}" ...> 
     <div ui-view="{{tab.route}}"></div> <!-- ex: <div ui-view="tab1"></div> --> 
    </uib-tab> 
</uib-tabset> 

Xem updated plunker

+0

Cảm ơn bạn. – Kickaha

+1

Điều này không trực tiếp áp dụng cho những gì tôi đang làm việc, nhưng tôi thực sự thích mã của bạn ở đây. Cảm ơn! –

+1

Làm thế nào tôi có thể đạt được điều này nếu tôi có một phần mẫu riêng biệt và bên trong mỗi mục trong menu có một mục ui-sref với định nghĩa trạng thái, tôi muốn bộ điều khiển thêm mục tab mới và đẩy tất cả nội dung đi từ templateUrl định cấu hình trong nhà cung cấp trạng thái. Hiện tại mỗi khi tôi nhấp vào một mục, nó sẽ tải nội dung bên trong mục xem ui, vì vậy thay vì thêm tab mới, nó chỉ thêm nội dung trong tab đầu tiên, nó không bao giờ tạo tab mới –

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