data-ng-click在data-ng-href的模板中不起作用

时间:2015-02-17 09:16:48

标签: javascript angularjs angularjs-directive angularjs-ng-repeat angular-ui

嗨,我是棱角分明的新人,面对角度模板的奇怪问题。我的模板有代码:

<li hover-menu data-ng-repeat="nav in navigations" data-ng-class="{'active': current == nav.name.toLowerCase() }">
            <a data-ng-href="{{nav.link}}" data-ng-click="nav.collapse = !nav.collapse">
                <i class="{{nav.icon}} fa-lg-icn"></i><span class="menu-title">{{nav.name}}</span>
            </a>
        <ul class="dropmenu" data-ng-show="nav.sub_menu != false" collapse="nav.collapse">
            <li data-ng-repeat="item in nav.sub_menu">
                <a data-ng-href="{{item.link}}" data-ng-click="showScrollAndGo(item.link)"><i class="fa fa-circle mrm mlm"></i>{{item.name}}</a>
            </li>
        </ul>
    </li>

但是 data-ng-click =“showScrollAndGo(item.link)无效。虽然我已在全球范围内定义了这样的内容:

app.run(function($rootScope, $location) {
                $rootScope.showScrollAndGo = function (path) {
                    alert(path)
                    $rootScope.showSpinner = false;
                    $location.path(path);
                }
            })

我做错了什么想法。

2 个答案:

答案 0 :(得分:0)

<a data-ng-href="{{item.link}}" data-ng-click="showScrollAndGo($event, item.link)"><i class="fa fa-circle mrm mlm"></i>{{item.name}}</a>


 $rootScope.showScrollAndGo = function ($event, path) {
                    $event.preventDefault();
                    alert(path)
                    $rootScope.showSpinner = false;
                    $location.path(path);
                }

您必须阻止事件的默认操作,因为您在锚元素上,它将触发浏览器更改视图。

答案 1 :(得分:0)

我想你最好检查一下要求。看到您在点击锚标记时同时尝试执行的两个事件。

因此,您需要明确要求在点击锚标记时触发一个事件,以将用户重定向到某个链接或在点击时执行某些操作。

当由于href而导致状态发生变化时,您不需要考虑崩溃,因为当您回到早期状态/ href时,您会发现崩溃处于早期状态。

希望这有帮助!