我正在尝试在 Angularjs 中使用指令来检查用户是否是他们自己,以便相应地更改模板。
例如
<li is-self >
<a ng-show="logged_in" ng-href="/users/{{user.public_id}}"> Settings </a>
</li>
诚然,这可能不是解决此问题的最佳方法,但是我目前想不出更好的方法。
然而,我遇到的问题是我不能在指令中执行 http 请求,因此我必须将它放在控制器中并将其作为范围函数引用,即
用户控制器
$scope.isSelf = ->
$http({method: 'GET', url: '/is_self/' + $routeParams.id}).
success((data, status, headers, config) ->
if data
$scope.logged_in = true
).
error((data, status, headers, config) ->
console.log(data)
)
用户模块
userModule.directive('isSelf', () ->
link: ($scope) ->
$scope.isSelf()
然而,这种技术带来了一个问题,因为该指令被跨多个文件和多个控制器使用。我认为最合适的解决方案只是在指令中执行请求,但这不起作用,因为您似乎无法将 $http 传递给它。
我理想的解决方案是结合我喜欢的
userModule.directive('isSelf', () ->
link: ($scope, $http) ->
$http({method: 'GET', url: '/is_self/' + "3f8686589ad"}).
success((data, status, headers, config) ->
if data
$scope.logged_in = true
).
error((data, status, headers, config) ->
console.log(data)
)
)
我显然对框架相当陌生,所以任何帮助将不胜感激。