【问题标题】:ng-repeat store separate valuesng-repeat 存储单独的值
【发布时间】:2014-10-01 12:45:42
【问题描述】:

我想将用户投票存储在 cookie 中,问题是在 ng-repeat 中我有一个名为 session.upVoteCount 的值。但它应该是每个事件列表项的单独值。是否可以将每个 upVoteCount 单独存储,然后再次单独检索它们?

<li ng-repeat="session in event.sessions | filter:query | orderBy:sortorder" class="span11">
                <div class="row session">
                    <div class="col-sm-1 well votingWidget">
                        <div class="votingButton" ng-click="upVoteSession(session)">
                            <span class="glyphicon glyphicon-arrow-up"></span>
                        </div>
                        <div class="badge badge-inverse">
                            <div>{{session.upVoteCount}}</div>
                        </div>
                        <div class="votingButton" ng-click="downVoteSession(session)">
                            <span class="glyphicon glyphicon-arrow-down"></span>
                        </div>
                    </div>

                </div>
            </li>

在我的控制器中我有这个:

$scope.upVoteSession = function(session) {
        session.upVoteCount++;            
    };

$scope.downVoteSession = function(session) {
        session.upVoteCount--;   
    };

【问题讨论】:

  • 您遇到错误了吗?请提供一个 jsfiddle(jsfiddle.net)

标签: angularjs cookies ng-repeat voting


【解决方案1】:

首先,我不建议使用术语“会话”,而是使用“投票”。但是,这是您的决定。

我在这个例子中简化了你的问题

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

Javascript:

function MyCtrl($scope) {
  $scope.votes = {};
  $scope.vote = function(key, val) {
    $scope.votes[key] = $scope.votes[key] || 0;
    $scope.votes[key]+= val;            
  };
}

HTML:

<li ng-repeat="no in [1,2,3,4,5]">
  {{no}} : {{votes[no]}} <br/>
  <a href="" ng-click="vote(no, +1)">upvote</a>
  <a href="" ng-click="vote(no, -1)">downvote</a>
</li>

【讨论】:

    【解决方案2】:

    大家好,我自己解决了,我无法让它与 JSfiddle 一起工作,所以我上传了整个东西。点击 server.bat 和浏览器到 localhost:8000/eventdetails.html 你会看到它工作。

    https://mega.co.nz/#!1d9yiYiA!zTzdztLAmhVDVYOvvVLINETI2bo_WjxCBteWYm2VUKc

    控制器:

    eventsApp.controller('EventController',
        function EventController($scope, $cookieStore, eventData) {
            $scope.sortorder = 'name';
            var ape = eventData.getEvent();
            ape.then(function (banana) {
                $scope.event = banana;
                angular.forEach(banana.sessions, function (value, key) {
                    var storecookie = ($cookieStore.get(value.name));
                    if (typeof storecookie !== "undefined") {
                        value.upVoteCount = storecookie;
                    }
                });
            });
            $scope.upVoteSession = function (session) {
                session.upVoteCount++;
                $cookieStore.put(session.name, session.upVoteCount);
            };
    
            $scope.downVoteSession = function (session) {
                session.upVoteCount--;
                $cookieStore.put(session.name, session.upVoteCount);
            };
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多