2016-10-27 48 views
1

我對Angular相對較新,並且正在使用它來過濾大量產品列表,然後該產品列表有能力在模式中打開,其中詳細信息是顯示。Angular Bootstrap UI Modal - 下一個/前一個

我見過一個不使用引導UI的下一個/上一個模式的工作示例,但尚未看到使用引導UI的一個示例。

這裏是一個簡化的工作列表和模式通過引導UI的Plunker,但我一直在瘋狂嘗試弄清楚如何顯示從打開的模式內的下一個/上一個模態?

http://plnkr.co/edit/mRxzn8crtkaKCL8SZlQB?p=preview

var app = angular.module('sortApp', ['ui.bootstrap']); 
app.controller('ModalInstanceCtrl', function ($scope, $modalInstance, feature) { 
    $scope.feature = feature; 

    $scope.ok = function (feature) { 

     $modalInstance.close($scope.feature); 
    }; 


}); 

angular.module('sortApp').controller('mainController', function ($scope, $modal, $log) { 

    // MODAL WINDOW 

    $scope.open = function (_feature) { 

     var modalInstance = $modal.open({ 
      controller: "ModalInstanceCtrl", 
      templateUrl: 'myModalContent.html', 
      keyboard: true, 
      resolve: { 
       feature: function() { 
        return _feature; 
       } 
      } 

     }); 

    //No CLUE WHAT TO DO HERE!? 
    $scope.showNext = function (_feature, index) { 
     if ((index + 1) > ($scope.allfeatures.length - 1)) { 
      return; 
     } 
     else { 
      turtle.show = false; 
      $scope.allfeatures[index + 1].show = true; 
     } 

    }; 

    }; 
    // create the list of features 
    $scope.allfeatures = [ 
     //Website Widgets 
     { index: 0, ID: 1, image: 'img/upload-tools.png', name: 'Upload Tools', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Attendees can upload credentials, student verification letters, professional licenses and other documentation required to validate their registration status.' }, 
     { index: 1, ID: 1, image: 'img/translation.png', name: 'Website Translation', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Microsoft Translator is used to translate your registration and housing websites with the click of one button.' }, 
     { index: 2, ID: 1, image: 'img/fundraising.png', name: 'Fundraising Motivator', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Encourage your attendees to help you reach fundraising goals with visually appealing dynamically populated graphics.' }, 
     { index: 3, ID: 1, image: 'img/analytics.png', name: 'Google Analytics', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: "<h2>Know your audience</h2> <p>Google Analytics helps you analyze visitor traffic and paint a complete picture of your audience and their needs, wherever they are along the path to purchase. Giving you an edge on what your visitors need and want.</p> <h2>Trace the customer path</h2><p>Knowing where a customer is on your site, and how they got there is a critical part of finding out who they are. Tools like Traffic Sources and Visitor Flow help you track the routes people take to reach you, as well as the devices they use to get there. Armed with this valuable information an ideal user experience can be created for them.</P> <h2>Analyze important trends</h2> Utilize a tool like In-Page Analytics which lets you make a visual assessment of how visitors interact with your pages. Learn what they're looking for and what they like, then tailor all of your marketing activities for maximum impact." } 
    ]; 


}); 

和HTML

 <body ng-app="sortApp" ng-controller="mainController"> 
     <br> 
     <div class="container"> 
     <ul class="list-group"> 
      <li class="list-group-item" ng-repeat="feature in allfeatures"> 
      <a ng-click="open(feature)"> 
       <div class="card-content"> 
       {{ feature.name }} 
       </div> 
      </a> 
      </li> 
     </ul> 
     </div> 

    <!--MODAL WINDOW--> 
    <script type="text/ng-template" id="myModalContent.html"> 

    <div class="modal-header"> 
     <h3>{{ feature.name }}</h3> 
    </div> 
    <div class="modal-body"> 

     <h5>{{ feature.category }}</h5> 
     <h5>{{ feature.type }}</h5> 
     </p> 

    </div> 
    <div class="modal-footer"> 

     <div class="row"> 
     <div class="col-sm-6 text-left"> 
      <a class="previous btn btn-default btn-lg" ng-click="showPrev(t, $index)"><i class="fa fa-arrow-left"></i> Previous</a> 
     </div> 
     <div class="col-sm-6 text-right"> 
      <a class="next btn btn-default btn-lg" ng-click="showNext(t, $index)">Next <i class="fa fa-arrow-right"></i></a> 
     </div> 
     </div> 
    </div> 

    </script> 


</body> 
+0

您必須提到這個問題:http://stackoverflow.com/questions/36629423/angularjs-go-to-previous-next-modal/ –

回答

0

檢查了這一點:http://plnkr.co/edit/COFgAJ1UpZlHLEe2VOoq?p=preview

showPrevshowNext功能都應該去你的ModalInstanceController內:

app.controller('ModalInstanceCtrl', function ($scope, $modalInstance, feature) { 

    $scope.feature = feature; 

    $scope.showNext = function (feature, index) { 
    $modalInstance.close("next"); 
    }; 

    $scope.showPrev = function(feature, index) { 
    $modalInstance.close("prev"); 
    }; 

}); 

這部分的邏輯是幾乎相同的另一個例子,除了你在各種情況下做什麼:

angular.module('sortApp').controller('mainController', function ($scope, $modal, $log) { 

    // MODAL WINDOW 

    // create the list of features 
    $scope.allfeatures = [ 
     //Website Widgets 
     { index: 0, ID: 1, image: 'img/upload-tools.png', name: 'Upload Tools', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Attendees can upload credentials, student verification letters, professional licenses and other documentation required to validate their registration status.' }, 
     { index: 1, ID: 1, image: 'img/translation.png', name: 'Website Translation', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Microsoft Translator is used to translate your registration and housing websites with the click of one button.' }, 
     { index: 2, ID: 1, image: 'img/fundraising.png', name: 'Fundraising Motivator', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: 'Encourage your attendees to help you reach fundraising goals with visually appealing dynamically populated graphics.' }, 
     { index: 3, ID: 1, image: 'img/analytics.png', name: 'Google Analytics', type: 'Website Widgets', category: 'Registration, Exhibitor, Housing', description: "<h2>Know your audience</h2> <p>Google Analytics helps you analyze visitor traffic and paint a complete picture of your audience and their needs, wherever they are along the path to purchase. Giving you an edge on what your visitors need and want.</p> <h2>Trace the customer path</h2><p>Knowing where a customer is on your site, and how they got there is a critical part of finding out who they are. Tools like Traffic Sources and Visitor Flow help you track the routes people take to reach you, as well as the devices they use to get there. Armed with this valuable information an ideal user experience can be created for them.</P> <h2>Analyze important trends</h2> Utilize a tool like In-Page Analytics which lets you make a visual assessment of how visitors interact with your pages. Learn what they're looking for and what they like, then tailor all of your marketing activities for maximum impact." } 
    ]; 

    $scope.open = function (_feature, index) { 

     var modalInstance = $modal.open({ 
      controller: "ModalInstanceCtrl", 
      templateUrl: 'myModalContent.html', 
      keyboard: true, 
      resolve: { 
       feature: function() { 
       return _feature; 
       } 
      } 

     }); 

     modalInstance.result.then(function(result) { 
      if (result == "next") { 
      if(index +1 < $scope.allfeatures.length) { 
       $scope.open($scope.allfeatures[index+1], index+1); 
      } 
      } 
      else { 
      if(index -1 >= 0) { 
       $scope.open($scope.allfeatures[index-1], index-1); 
      } 
      } 
     }); 
    }; 
+0

啊,我明白了,太棒了!非常感謝@JoelCDoyle,你讓我的一天! –

+0

@BenAdams如果它爲您的問題提供瞭解決方案,那麼習慣上將答案標記爲「已接受」。 –

相關問題