【问题标题】:bootstrap-angular.js comments sorting by orderbootstrap-angular.js 评论按顺序排序
【发布时间】:2016-03-18 11:47:17
【问题描述】:

我想通过在输入部分输入日期、作者和评级以特定顺序显示 cmets。它们还应该能够按降序排序,例如,如果输入 -date。我被卡住了。

Comments sorting

这是我的代码。

                <ul class="list-unstyled" ng-repeat="comment in dishDetailCtrl.dish.comments | orderBy:dishDetailCtrl.sortBy">
                  <li><blockquote>
                      <h4>{{comment.rating}} Stars</h4>
                      <h4>{{comment.comment}}</h4>
                      <footer>
                          {{comment.author}}, {{comment.date | date:mediumDate}}
                      </footer>
                  </blockquote></li>
              </ul>

<script>

    var app = angular.module('confusionApp',[]);

    app.controller('dishDetailController', function() {

        var dish={
                      name:'Uthapizza',
                      image: 'images/uthapizza.png',
                      category: 'mains', 
                      label:'Hot',
                      price:'4.99',
                      description:'A unique combination of Indian Uthappam (pancake) and Italian pizza, topped with Cerignola olives, ripe vine cherry tomatoes, Vidalia onion, Guntur chillies and Buffalo Paneer.',
                       comments: [
                           {
                               rating:5,
                               comment:"Imagine all the eatables, living in conFusion!",
                               author:"John Lemon",
                               date:"2012-10-16T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Sends anyone to heaven, I wish I could get my mother-in-law to eat it!",
                               author:"Paul McVites",
                               date:"2014-09-05T17:57:28.556094Z"
                           },
                           {
                               rating:3,
                               comment:"Eat it, just eat it!",
                               author:"Michael Jaikishan",
                               date:"2015-02-13T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Ultimate, Reaching for the stars!",
                               author:"Ringo Starry",
                               date:"2013-12-02T17:57:28.556094Z"
                           },
                           {
                               rating:2,
                               comment:"It's your birthday, we're gonna party!",
                               author:"25 Cent",
                               date:"2011-12-02T17:57:28.556094Z"
                           }

                       ]
                };

        this.dish = dish;

    });
</script>

【问题讨论】:

  • 您如何为输入定义ng-model?

标签: angularjs twitter-bootstrap sorting angularjs-filter angularjs-orderby


【解决方案1】:
<div class="col-xs-9 col-xs-offset-1">
                    <div class="container">
                        <div class="row">
                        <div class="col-xs-2">Customer Comments</div>
                        <div class="col-xs-3-offset-1">
                            Sort by<input type="text" ng-model="dishDetailControllerSortBy" value=" ">
                            </div>
                        </div>
                        <div class="media-list" ng-repeat="cmnt in dishCtrl.dish.comments | orderBy:dishDetailControllerSortBy">
                            <div class="media">
                            <blockquote>{{cmnt.comment}}

                            <footer>
                            {{cmnt.author}},{{cmnt.date | date:format:mediumDate}}
                                </footer></blockquote>
                            </div>


                        </div>

        </div>
    </div>

【讨论】:

  • 您能否添加评论来描述您的解决方案为何看起来像这样以及关键点是什么!?谢谢。
【解决方案2】:
 <input ng-model="userInput"> </input> </p>
<blockquote ng-repeat="comment in dishCtrl.dish.comments | orderBy:userInput">
            {{comment.rating}} Stars
            {{comment.comment}}
     <footer>{{comment.author}} {{comment.date | date:'medium'}}</footer>
 </blockquote>

【讨论】:

    【解决方案3】:

    上面的代码似乎可以正常工作,我认为您错过了在 SortBy 输入中错误地写入 ng-model 变量名。

    应该是

    ng-model="dishDetailCtrl.sortBy"
    

    而不是

    ng-model="sortBy"
    

    HTML

    <div ng-controller="dishDetailController as dishDetailCtrl">
      Sort By <input type="text" ng-model="dishDetailCtrl.sortBy">
      <ul class="list-unstyled" ng-repeat="comment in dishDetailCtrl.dish.comments | orderBy:dishDetailCtrl.sortBy">
        <li>
          <blockquote>
            <h4>{{comment.rating}} Stars</h4>
            <h4>{{comment.comment}}</h4>
            <footer>
              {{comment.author}}, {{comment.date | date:mediumDate}}
            </footer>
          </blockquote>
        </li>
      </ul>
    </div>
    

    Demo Plunkr

    【讨论】:

    • 谢谢兄弟。我在使用 ng-model 时犯了错误。非常感谢。
    • @Joy 很高兴为您提供帮助..您可以将答案标记为正确。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多