それに応じてテンプレートを変更するために、ユーザーが自分自身であるかどうかを確認するために、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)
)
)
私は明らかにフレームワークにかなり慣れていないので、どんな助けでも大歓迎です。