Angularjs $ location.url或path不会更新ng-view中的视图

时间:2016-02-11 15:49:21

标签: angularjs

我正在尝试使用$ location.url或path来更新ng-view中的视图,但未成功。 控制器是:

eventsApp.controller('MenuController',
    function($scope, $location) {

        $scope.createEvent = function(){
            $location.url('/newEvent');            
        };

    }
);

只需在控制器内的ngClick事件中调用该函数:

<li><a href="#" ng-click="createEvent()">Create Event</a></li>

路由是:

angular.module('eventsApp', ['ngResource', 'ngRoute'])
    .config(function($routeProvider) {
        $routeProvider.when('/newEvent',
            {
                templateUrl:'templates/NewEvent.html',
                controller: 'EditEventController'
            });

    });

当然,如果我使用锚标签的href,它可以正常工作;但如果我想在被调用的函数中做一些更复杂的事情,我就不能。

我查看了浏览器工具的“网络”部分,我可以看到该模板已被提取。但是地址栏中的URL都没有更新,或者视图被更新(它实际上变成空白)。 我正在使用Apache作为Web服务器,如果这件事有助于理解这个问题的原因。

1 个答案:

答案 0 :(得分:1)

由于href="#",我怀疑它正在重新加载页面。如果您需要坚持使用锚标记即使您没有使用href,请尝试删除#,如下所示:

<li><a href="" ng-click="createEvent()">Create Event</a></li>

但是,如果您需要support IE users,可能会有一些后备。如果是这种情况,您可以为按钮切换锚标记。

<li>
    <button type="button" ng-click="createEvent()">Create Event</button>
</li>