角度材质 - 防止md-tab上的默认值

时间:2015-11-18 16:23:34

标签: angular-material

我有很多标签,代表不同的服务。我希望在用于添加新服务的列表末尾标记最后的“tab”。用简单的'+'表示。这将打开一个简单的对话。

我希望我可以在这个单一选项卡上放置我自己的ng-click行为并防止默认但这不起作用。

在标签体开关发生之前,有没有什么方法可以“捕捉”标签点击事件并阻止它发生?

2 个答案:

答案 0 :(得分:1)

目前似乎无法实现(例如https://groups.google.com/forum/#!topic/ngmaterial/rNWMk3S9uDI) - 至少使用官方api。

如果您对可能侵入指令内部的解决方案感到满意,那么您可以执行以下操作:

angular.module('MyApp').directive('tabWatcher', function() {
return {
    require: ['mdTabs'],
    restrict: 'A',
    link: function(scope, el, attrs, controllers) {
        var mdTabsCtrl = controllers[0];
        var origSelectFn = mdTabsCtrl.select;

        // overwrite original function with our own
        mdTabsCtrl.select = function(index, canSkipClick) {
            if (...) {
                origSelectFn(index, canSkipClick);
            }
        }
    }
};

我在这里放了一个演示http://codepen.io/jarek-jpa/pen/wGxqOq。尝试单击某些选项卡。 select()来电将被截获,具体情况视情况而定。

免责声明:再次,它侵入md-tabs指令内部,因此可能随时停止工作(使用angular-material 1.0.7进行测试)

答案 1 :(得分:-2)

您可以将Boehm's garbage collector设置为无,以防止md-tab响应点击次数。

示例:

<style>
md-tabs.readonly {
  pointer-events: none;
  user-select: none;
}
</style>

<md-tabs class="readonly">
  <md-tab label="can't touch this"></md-tab>
</md-tabs>

经过测试,可以使用Angular Material 1.0.1