Angular Bootstrap UI模式 - 下一个/上一个

时间:2016-10-27 16:08:21

标签: angularjs angular-ui-bootstrap

我对Angular相对较新,并且正在使用它来过滤大量产品,然后该产品列表可以在显示其他详细信息的模式中打开。

我见过一个下一个/上一个模式的工作示例,它不使用bootstrap UI,但还没有看到一个使用bootstrap 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>

1 个答案:

答案 0 :(得分:1)

检查出来: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);
            }
          }
        });
    };