3

我已经坚持了几天了。我想根据当前用户(id)显示一个项目。

例如:

<!-- if current user has already 'liked' this post -->
    Show 'UnLike' button
<!-- else -->
    Show 'Like' button
<!-- end -->

在 Angularjs 中如何使用基于当前用户 id 的条件语句?

如果有帮助,我将 Rails 与 Devise 一起用作我的后端。

4

2 回答 2

4

让我们轻松一点。

首先,设置 gon

在您的 Rails 控制器级别,无论在哪里需要,或在before_filterbefore_action在 Rails 4 中),执行:

gon.current_user = { id: current_user.id } 

然后在角度方面:

app.service 'sessionService', [ '$window', ($window)->

  factory =
    current_user: ->
      $window.gon.current_user

  factory
]

然后注入您的会话服务,您将可以通过该方法访问该current_user对象

于 2013-10-01T17:41:29.193 回答
2

如果您想要在客户端上处理此问题的“Angular 方式”,您可能需要查看我创建的工作 CodePen 示例。

模板:

<section ng-app="app" ng-controller="MainCtrl">
  <ng-switch on="hasLiked">
    <button class="btn btn-primary" ng-switch-when="true">Unlike</button>
    <button class="btn btn-primary" ng-switch-when="false">Like</button>
  </ng-switch>
  <br>
  <button class="btn toggle" ng-click="hasLiked = !hasLiked" ng-bind-template="Change result of service call from '{{hasLiked}}' to '{{!hasLiked}}'">Change</button>
</section>

的JavaScript:

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

app.factory('userSvc', function() {
  // mock $http lookup
  var lookupResult = true;

  return {
    hasLiked: lookupResult
  };
});

app.controller('MainCtrl', function($scope, userSvc) {
  $scope.hasLiked = userSvc.hasLiked;
});
于 2013-10-01T18:01:26.553 回答