【发布时间】:2015-10-29 04:08:55
【问题描述】:
我有以下Index.html 文件(我也将div 和ng-view 放在一起):
<ul ng-controller="myController">
<li>
<a href="#/doit">Do it!</a>
</li>
</ul>
路线配置:
$routeProvider.when('/doit', {
templateUrl: 'partials/doit.html'
controller: 'myController'
});
$routeProvider.otherwise({
redirectTo: 'index.html'
});
控制器:
app.controller('myController', ['$scope', '$location', function ($scope, $location) {
$scope.name = "name";
alert($scope.name);
$location.path("/");
}]);
奇怪的是,当我点击Do it!链接后,它转到http://localhost:3000/#/doit.html(myController的代码在点击后执行,我看到警报弹出),然后我返回到http://localhost:3000/#/index.html(这是我想要的,我把$location.path("/")放在控制器里。
但是,这一次,出于某种原因,控制器代码没有执行。它仅在我刷新页面后运行,即使它已分配给无序列表。有人可以帮忙吗?
【问题讨论】:
-
通过浏览器的返回按钮返回时不起作用?
-
好吧,我不能回去,因为一旦我登陆 doit.html,我就会被重定向到 index.html。它可能与 $location.path("/") 有关。文档说它会更改浏览器中的 URL(但是,一旦 Angular 注意到 URL 栏中的更改,它就会查看路由规则并将我重定向到 index.html)。问题是加载 index.html 后控制器代码不运行。 (应该,我有 ng-controller 指令,对吧?)
-
什么时候出现错误?我不明白
-
好的,一步一步来:我在 index.html 上。出现警报弹出窗口(它在控制器中 -
alert($scope.name);)接下来,我单击<a href="#/doit">Do it!</a>。再次出现警报弹出窗口。它立即将我重定向到index.html(因为$location.path("/")),这一次没有任何反应(没有带有“名称”的警报窗口),即使这个警报窗口应该出现(它在控制器中)。结论 - 这次没有加载控制器......由于某种原因。 -
我认为这是因为它已经加载了 - 当您在重新加载后单击“执行”时它会出现吗?
标签: javascript html angularjs