2016-10-27 47 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如果它为您的问题提供了解决方案,那么习惯上将答案标记为“已接受”。 –

相关问题