anglejsでタブが選択されている場合にのみ関数(またはディレクティブ)を呼び出す方法は?

アブドラヒプログラム

私はangularjsを初めて使用し、2つのタブを持つページを持っています。ディレクティブを使用してタブを作成し、$ httpを使用してサーバーからjsonを取得します。問題は、ユーザーが他のタブを表示することを決定するまでサーバーを要求したくないことです。タブ。これどうやってするの?これが私の指示です:

var sdmtab = angular.module('sdmTab', []);

sdmtab.directive('tab', function() {
return {
    restrict: 'E',
    transclude: true,
    template: '<div role="tabpanel" ng-show="active" ng-transclude></div>',
    require: '^tabset',
    scope: {
        heading: '@'
    },
    link: function(scope, elem, attr, tabsetCtrl) {
        scope.active = false;
        tabsetCtrl.addTab(scope);
    }
};
});
sdmtab.directive('tabset', function() {
return {
    restrict: 'E',
    transclude: true,
    scope: {},
    templateUrl: 'app/components/directiveTemps/tabset.html',
    bindToController: true,
    controllerAs: 'tabset',
    controller: function() {
        var self = this;
        self.tabs = [];
        self.addTab = function addTab(tab) {
            self.tabs.push(tab);
            if (self.tabs.length === 1) {
                tab.active = true;
            }
            self.select = function(selectedTab) {
                angular.forEach(self.tabs, function(tab) {
                    if (tab.active && tab !== selectedTab) {
                        tab.active = false;
                     }
                 });

                 selectedTab.active = true;
             };
         };
     }
  };
 });

sdmtab.directive('teamsq', function() {
return {
    restrict: 'E',
    scope: {},
    templateUrl: 'app/components/directiveTemps/teamSquad.html',
    bindToController: true,
    controllerAs: 'teamsq',
    controller: function($http, $log, userInfo) {
        var self = this;
        userInfo.then(function(answer) {
            var sid = answer.data.data.current_team.sid;
            var tid = answer.data.data.current_team.tid;
            self.team = [];
            self.bang = 'shirin';
            $http.get(webservice + "/team?token=" + token + "&team_id=" + tid + '&season_id=' + sid).success(function(response) {
                var players = response.data.players;
                angular.forEach(response.data.players, function(player) {
                    player['imageURL'] = "http://sdm.tarafdari.com/sites/default/files/players/150x150/" + player.pid + ".png";
                });
                self.team = response.data;
            });
        });

    }
};
});

これが私のhtmlです:

<tabset>
  <tab heading="Details">
       ...
   </tab>
   <tab heading="Other infos">
       <teamsq></teamsq>
   </tab>
</tabset>

teamqディレクティブが必要です。「その他の情報」タブが選択されている場合にのみリクエストしてください。

アブドラヒプログラム

ディレクティブを少し編集しました。tabディレクティブでactionlocal sopeを使用して、ディレクティブを外部関数にバインドしました。

sdmtap.directive('tab', function() {
    return {
    restrict: 'E',
    transclude: true,
    template: '<div role="tabpanel" ng-show="active" ng-transclude></div>',
    require: '^tabset',
    scope: {
        heading: '@',
        action: '&'
    },
    link: function(scope, elem, attr, tabsetCtrl) {
        scope.active = false;
        tabsetCtrl.addTab(scope);
    }
  };
});

タブセットディレクティブテンプレートで、select関数の横にあるタブのng-clickにアクションプロパティを追加します。

<a href="" role="tab" ng-click="tabset.select(tab);tab.action()">{{tab.heading}}</a>

元のテンプレートでは、showSquads()関数をアクションプロパティとしてディレクティブに追加します

<tab action="showSquads()" heading="{{'Team Squads'| translation}}">

コントローラーでshowSquads()関数を作成します。タブをクリックすると、タブ機能以外のカスタム関数をすべてのタブで実行できるようになりました。

ここにプランカーがあります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ページが読み込まれるたびにディレクティブが呼び出されるのはなぜですか?

分類Dev

カスタムディレクティブのリンク関数は、ng-repeatが置き換えられる前に呼び出されます

分類Dev

[(ngModel)]ディレクティブを使用する場合、変更を検出するために呼び出されるイベント式は何ですか?

分類Dev

タブが選択されている場合にのみ、アクションバーで選択されたタブのフラグメントアクティビティoncreate()メソッドをロードするにはどうすればよいですか?

分類Dev

タブが選択されている場合にのみ、アクションバーで選択されたタブのフラグメントアクティビティoncreate()メソッドをロードするにはどうすればよいですか?

分類Dev

2つの異なるサービスからデータを受信した後、ディレクティブで関数を呼び出す方法は?

分類Dev

ディレクティブで選択された要素の数を数える方法は?

分類Dev

コピー(ソースとターゲットが異なるディスクにある場合)が完了するまで、Linuxの「名前の変更」関数呼び出しブロックは実行されますか

分類Dev

anglejsディレクティブは呼び出されません

分類Dev

メソッドをディレクティブに渡し、それを呼び出してネストされたディレクティブにデータを渡すにはどうすればよいですか?

分類Dev

ディレクティブがロードされたときにinit関数を呼び出す

分類Dev

ディレクティブがロードされた後に関数を呼び出す

分類Dev

ディレクティブがロードされた後に関数を呼び出すangularjs

分類Dev

カスタムディレクティブのリンク内のelement.replaceWithは、最初に呼び出されたときにのみ機能します

分類Dev

そのアリティ(またはコンパイル時に知られている他の情報)に応じて、関数オブジェクトを異なる方法で呼び出すにはどうすればよいですか?

分類Dev

AngularJs:子モジュールのディレクティブでリンクされた関数を呼び出すことができませんか?

分類Dev

分離スコープ(ngclickfunction: '&')によって渡されたAngularディレクティブ呼び出し関数は正常に機能しますが、ブラウザーは次のように表示します:Uncaught SyntaxError:Unexpected token}

分類Dev

AngularJSディレクティブの属性で定義された関数を呼び出す

分類Dev

データがテーブルに挿入されていないため、複数の材料と数量を選択すると、このDAL関数が複数回呼び出されます

分類Dev

関数が単独で呼び出された場合、オブジェクトのメソッドは関数内で呼び出すことができますが、関数がsetTimeoutを介して呼び出された場合、オブジェクトは未定義です。

分類Dev

Angular:ng-ifまたは別のAngularディレクティブを使用してHTMLビューからコントローラー関数を呼び出すにはどうすればよいですか?

分類Dev

1つまたは複数のチェックボックスが選択されている場合にのみ削除ボタンを表示する方法

分類Dev

UIViewサブクラスですべてのプロパティが設定された後でのみ関数を呼び出すにはどうすればよいですか?

分類Dev

anglejsディレクティブはコントローラー関数を呼び出しません

分類Dev

anglejsディレクティブはコントローラー関数を呼び出しません

分類Dev

このプロパティが派生クラスで上書きされている場合、基本クラスのプロパティを呼び出す方法は?

分類Dev

スレッドが同期ブロックの前にモニターが解放されるのを待っている場合、またはwait()を呼び出す場合に違いはありますか

分類Dev

バックグラウンドスレッドからstartActivityを呼び出し、メインスレッドがブロックされている場合、アクティビティは遅延で始まります

分類Dev

Angularディレクティブ内で自分の関数を呼び出す方法は?

Related 関連記事

  1. 1

    ページが読み込まれるたびにディレクティブが呼び出されるのはなぜですか?

  2. 2

    カスタムディレクティブのリンク関数は、ng-repeatが置き換えられる前に呼び出されます

  3. 3

    [(ngModel)]ディレクティブを使用する場合、変更を検出するために呼び出されるイベント式は何ですか?

  4. 4

    タブが選択されている場合にのみ、アクションバーで選択されたタブのフラグメントアクティビティoncreate()メソッドをロードするにはどうすればよいですか?

  5. 5

    タブが選択されている場合にのみ、アクションバーで選択されたタブのフラグメントアクティビティoncreate()メソッドをロードするにはどうすればよいですか?

  6. 6

    2つの異なるサービスからデータを受信した後、ディレクティブで関数を呼び出す方法は?

  7. 7

    ディレクティブで選択された要素の数を数える方法は?

  8. 8

    コピー(ソースとターゲットが異なるディスクにある場合)が完了するまで、Linuxの「名前の変更」関数呼び出しブロックは実行されますか

  9. 9

    anglejsディレクティブは呼び出されません

  10. 10

    メソッドをディレクティブに渡し、それを呼び出してネストされたディレクティブにデータを渡すにはどうすればよいですか?

  11. 11

    ディレクティブがロードされたときにinit関数を呼び出す

  12. 12

    ディレクティブがロードされた後に関数を呼び出す

  13. 13

    ディレクティブがロードされた後に関数を呼び出すangularjs

  14. 14

    カスタムディレクティブのリンク内のelement.replaceWithは、最初に呼び出されたときにのみ機能します

  15. 15

    そのアリティ(またはコンパイル時に知られている他の情報)に応じて、関数オブジェクトを異なる方法で呼び出すにはどうすればよいですか?

  16. 16

    AngularJs:子モジュールのディレクティブでリンクされた関数を呼び出すことができませんか?

  17. 17

    分離スコープ(ngclickfunction: '&')によって渡されたAngularディレクティブ呼び出し関数は正常に機能しますが、ブラウザーは次のように表示します:Uncaught SyntaxError:Unexpected token}

  18. 18

    AngularJSディレクティブの属性で定義された関数を呼び出す

  19. 19

    データがテーブルに挿入されていないため、複数の材料と数量を選択すると、このDAL関数が複数回呼び出されます

  20. 20

    関数が単独で呼び出された場合、オブジェクトのメソッドは関数内で呼び出すことができますが、関数がsetTimeoutを介して呼び出された場合、オブジェクトは未定義です。

  21. 21

    Angular:ng-ifまたは別のAngularディレクティブを使用してHTMLビューからコントローラー関数を呼び出すにはどうすればよいですか?

  22. 22

    1つまたは複数のチェックボックスが選択されている場合にのみ削除ボタンを表示する方法

  23. 23

    UIViewサブクラスですべてのプロパティが設定された後でのみ関数を呼び出すにはどうすればよいですか?

  24. 24

    anglejsディレクティブはコントローラー関数を呼び出しません

  25. 25

    anglejsディレクティブはコントローラー関数を呼び出しません

  26. 26

    このプロパティが派生クラスで上書きされている場合、基本クラスのプロパティを呼び出す方法は?

  27. 27

    スレッドが同期ブロックの前にモニターが解放されるのを待っている場合、またはwait()を呼び出す場合に違いはありますか

  28. 28

    バックグラウンドスレッドからstartActivityを呼び出し、メインスレッドがブロックされている場合、アクティビティは遅延で始まります

  29. 29

    Angularディレクティブ内で自分の関数を呼び出す方法は?

ホットタグ

アーカイブ