2016-07-07 13 views
2

htmlファイルtemplates\events.htmlに次のコードがあります。 route.jsなぜコントローラのコードが2回呼び出されるのですか?

.state('menu.music', { 
    url: '/music', 
    views: { 
     'side-menu21': { 
     templateUrl: 'templates/music.html', 
     controller: 'musicCtrl' 
     } 
    } 
    }) 

<div class="events-2colmn-l backgnd-cover" ui-sref="menu.music"> 
    MUSIC 
</div> 

とコントローラに

.controller('musicCtrl', function ($scope, EventService) { // called twice when clicked 
    var allEvents = EventService.query({ category: "Music" }); 
    allEvents.$promise.then(function (response) { 
     $scope.events = response; 
    }); 
}) 

はあり<div ...>MUSIC</div>をタッチすると、コントローラのコードは、常に二回呼ばれています。クリックすると一度だけ呼び出されることを確認するにはどうすればよいですか?

+0

これはアプリケーションの他の部分で発生しますか?いくつかのログやブレークポイントを他のコントローラに配置してください。 –

+1

アプリ全体で 'musicCtrl'を検索し、events.html – Srijith

+0

@Srijithでng-controllerのような重複したコントローラを持っていないことを確認します。検索されたのは1つの 'musicCtrl'コントローラと1つのテンプレートmusic.htmlファイルには 'ng-controller =" musicCtrl "' – ca9163d9

答えて

2

コントローラは、ng-controllerまたはapp.jsの状態でhtmlに関連付けられている必要があります。あなたはこの

.state('menu.music', { 
url: '/music', 
views: { 
    'side-menu21': { 
    templateUrl: 'templates/music.html', 
    controller: 'musicCtrl' 
    } 
    } 
}) 

のようなあなたの状態を持っている場合

はつまり、あなたのmusic.htmlでNG-コントローラを必要といけません。コントローラが2回呼び出されている原因は何か。あなたは

  • 目と2回目の呼び出しているとき、NG-コントローラを削除してみて、一度

  • +0

    ありがとうございました。ところで、より良い方法はどちらですか? (route vs ng-controller) – ca9163d9

    +0

    私は通常htmlでそれらを持っているので、どのコントローラがhtmlで使用されているかはルートを確認することなく知っていますが、個人的な好みです。自分がどちらかを選択する理由を認識していない。 – Srijith

    3

    あなたのコントローラが二回呼び出されているので、それはある...

    • を検証する際のテンプレートは/音楽.htmlが呼び出されるのは、music.htmlでng-controller指示文を使用する必要があるからです。親切にチェックしてください。

    関連する問題