我有很多标签,代表不同的服务。我希望在用于添加新服务的列表末尾标记最后的“tab”。用简单的'+'表示。这将打开一个简单的对话。
我希望我可以在这个单一选项卡上放置我自己的ng-click行为并防止默认但这不起作用。
在标签体开关发生之前,有没有什么方法可以“捕捉”标签点击事件并阻止它发生?
答案 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