我正在尝试使用$ 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服务器,如果这件事有助于理解这个问题的原因。
答案 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>