HTMLファイル:角度依存性の問題
<div class="header" ng-controller='HomeCtrl as homeCtrl'>
<div class="panel-header container">
<h1>UkrBook</h1>
<ul class="nav nav-tabs navbar-right">
<li ng-class="{active: homeCtrl.isSelected(1)}"><a href ng-click="homeCtrl.selectTab(1, 'home')">Головна</a></li>
<li ng-hide="" ng-class="{active: homeCtrl.isSelected(2)}"><a href ng-click="homeCtrl.selectTab(2, 'login')">Увійдіть</a></li>
<li ng-class="{active: homeCtrl.isSelected(3)}"><a href ng-click="homeCtrl.selectTab(3, 'register')">Реєстрація</a></li>
<li ng-class="{active: homeCtrl.isSelected(4)}"><a href ng-click="homeCtrl.selectTab(4, 'about')">Про нас</a></li>
<li ng-class="{active: homeCtrl.isSelected(5)}"><a href ng-click="homeCtrl.selectTab(5, 'profile')">Профіль</a></li>
<li ng-class="{active: homeCtrl.isSelected(6)}"><a href ng-click="homeCtrl.selectTab(6, 'home', Auth.logout())">Вийти</a></li>
</ul>
</div>
</div>
コントローラーピース:
.controller('HomeCtrl', function($state, Auth) {
var homeCtrl = this;
homeCtrl.tab = 1;
homeCtrl.logout = Auth.logout;
homeCtrl.selectTab = function(setTab, state, callback) {
homeCtrl.tab = setTab;
$state.go(state).then(callback),
function(error) {
console.log(error);
};
};
認証サービス:
.factory('Auth', function($firebaseAuth, FirebaseUrl, $state) {
var ref = new Firebase(FirebaseUrl);
var Auth = $firebaseAuth(ref);
Auth.logout = function(){
ref.unauth().then(function(){
console.log('Logged out');
$state.go('home');
}, function(error){
authCtrl.error = error;
});
};
return Auth;
問題は以下の通りです:HTMLファイルからAuth.logout
方法がすることはできません私はHomeCtrl
をコントローラとして使用していますが、DI Auth
工場。 だから、それを明確にするために、これは動作しません。
ng-click="homeCtrl.selectTab(6, 'home', Auth.logout())"
私はHomeCtrl
にhomeCtrl.logout = Auth.logout;
を追加して、私のHTMLファイルにhomeCtrl.logout
を呼び出す必要があります。
誰かに説明してもらえますか?私はそうすることができないのですが、サービスを注入する適切な方法ですか?また、私はこれに関する例をいくつかの良い記事に感謝します。ありがとう。
ありがとうございました。だから、これが私がアクセスできる唯一の方法です。常にコントローラーでメソッドを再割り当てしていますか? –
はい。通常、あなたの見解ではすべてのサービス方法が必要なわけではありませんが、その一部、またはそれらの組み合わせ... – MarcoS
素晴らしい答えに感謝しています! –