Javascript 在 md-tab 标签上使用 ng-click

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/31783859/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 07:11:31  来源:igfitidea点击:

Use ng-click on md-tab label

javascripthtmlangularjsangular-material

提问by Ellone

I'm having trouble with md-tabs: I can't call a controller function whenever I click on a specific tab to be displayed.

我遇到了问题md-tabs:每当我单击要显示的特定选项卡时,我都无法调用控制器函数。

Here are the few codes I tried :

这是我尝试过的几个代码:

<md-tabs md-center-tabs id="menuTabs" md-dynamic-height="true" ng-click="focusSearch()">

            <md-tab label="<i class='fa fa-search'></i>" ng-if="handleResize()">
                <md-content class="control-sidebar-dark" ng-style="{'height' : menuHeight}">

and

<md-tabs md-center-tabs id="menuTabs" md-dynamic-height="true">

            <md-tab label="<i class='fa fa-search' ng-click='focusSearch()'></i>" ng-if="handleResize()">
                <md-content class="control-sidebar-dark" ng-style="{'height' : menuHeight}">

and

<md-tabs md-center-tabs id="menuTabs" md-dynamic-height="true">

            <md-tab ng-click="focusSearch()" label="<i class='fa fa-search'></i>" ng-if="handleResize()">
                <md-content class="control-sidebar-dark" ng-style="{'height' : menuHeight}">

I want my focusSearch()function to be called when I click on this tab but she never is.

我希望我的focusSearch()函数在我点击这个标签时被调用,但她从来没有。

回答by Trevor

Try using these built in md-tabattributes

尝试使用这些内置md-tab属性

  • md-on-select
  • md-on-deselect
  • md-on-select
  • md-on-deselect

var app = angular.module('myapp', ['ngMaterial']);

app.controller('main', function($scope) {

  $scope.myClickEvent1 = function() {
    alert('one selected');
  }

  $scope.myClickEvent2 = function() {
    alert('two selected');
  }

});
<link href="https://cdnjs.cloudflare.com/ajax/libs/angular-material/0.11.0/angular-material.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular-aria.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular-animate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-material/0.11.0/angular-material.min.js"></script>

<div ng-app="myapp" ng-controller="main">
  <md-tabs>
    <md-tab md-on-select="myClickEvent1()">One</md-tab>
    <md-tab md-on-select="myClickEvent2()">Two</md-tab>
  </md-tabs>
</div>

Note:This event differs slightly from ng-click, in that if a tab is already selected and then clicked, the event will not fire.

注意:此事件与 ng-click 略有不同,因为如果已经选择了一个选项卡然后单击,则不会触发该事件。

Source: https://material.angularjs.org/latest/#/api/material.components.tabs/directive/mdTab

来源:https: //material.angularjs.org/latest/#/api/material.components.tabs/directive/mdTab

回答by Ellone

Like Creator suggested, I ended up using a directive instead of ng-click:

就像 Creator 建议的那样,我最终使用了一个指令而不是ng-click

http://codepen.io/anon/pen/oXJPvx

http://codepen.io/anon/pen/oXJPvx

回答by abstractME

I reached here while looking for angular/material 6, i did in this way by following Trevors solution:

我在寻找角度/材料 6 时到达这里,我通过遵循 Trevors 解决方案以这种方式做到了:

<mat-tab-group (selectedTabChange)="tabChanged($event)">

in .tsfile

.ts文件中

   tabChanged(event) {
    if (event.tab.textLabel == 'matchingTabName') {
        //do your stuff
    } else {
        //do your stuff
    }
  }