现在我已经被困了好几天了。我想根据当前用户(id)显示项目。
举个例子:
<!-- if current user has already 'liked' this post -->
Show 'UnLike' button
<!-- else -->
Show 'Like' button
<!-- end -->
如何根据Angularjs中当前用户的ID使用条件语句?
我使用Rails作为我的后端以及Devise,如果它有帮助..
答案 0 :(得分:4)
让我们轻松一点。
首先,setup gon。
在Rails控制器级别,无论何时需要,或在before_filter
(Rails 4中为before_action
)中,执行:
gon.current_user = { id: current_user.id }
然后在Angular方面:
app.service 'sessionService', [ '$window', ($window)->
factory =
current_user: ->
$window.gon.current_user
factory
]
然后注入会话服务,您将可以通过方法
访问current_user
对象
答案 1 :(得分:2)
如果您想要在客户端处理此问题的“Angular方式”,您可能需要查看我创建的working CodePen example。
模板:
<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;
});