たぶん、2 ウェイ バインディングの使用は、$watch
まだあまり明確ではありません..しかし、このコードが機能することを期待していました!
index.htmlページにtopNavbarディレクティブがあります。ユーザーがログインしていない場合、topNavbarはloginButtonを表示する必要があります。それ以外の場合は、ログイン済みの場合はloginButtonを表示します。
だから私はtopNavbarng-switch
にあり、CurrentUserServiceのisLogged属性を見ています。これは のようなものだと思います。$watch(CurrentUserService.isLogged)
ただし、 に変更CurrentUserService.isLogged
してtrue
も、ng-switch
はすぐには更新されません。ボタンをクリックしてビューを変更するなど、私のアクションの後に更新されます。期待どおりに動作しないのはなぜですか?
これは私のコードです:
index.html
<html lang="it" xmlns:ng="http://angularjs.org" ng-app="epoiApp">
...
<body style="overflow-y: auto;">
...
<top-navbar></top-navbar>
...
</body>
</html>
ディレクティブ テンプレート
<div ng-switch on="navbarCtrl.isLogged()">
<div ng-switch-when="false">
<login-button></login-button>
</div>
<div ng-switch-when="true">
<loggedin-button></loggedin-button>
</div>
</div>
コントローラー navbarCtrl
controller:function(CurrentUserService)
{
this.isLogged = function()
{return CurrentUserService.isLogged();}
}
CurrentUserService
.service('CurrentUserService', function ()
{
// initialization
_islogged = false;
this.isLogged = function()
{ return _islogged; };
}
ありがとうございました