0

我有一个提琴手来展示我的设置。

http://jsfiddle.net/smartdev101/dt6kkyy3

问题是 routeController 函数在页面加载时只被调用一次,但是在哈希更改时(作为链接点击的结果),该函数routeController没有被再次调用。

我在另一个 ng 模块中生成了我的链接,不确定这些链接是否必须与路由器位于同一模块中。

<div id="router">
    <div ng-view></div>
</div>

<div id="navigation" data-ng-cloak>
        <ul id="folios" data-ng-controller="FoliosController" class="nav nav-pills nav-stacked">
            <li data-ng-repeat="folio in folios" ng-class="{active: isActive('/search/{{folio.productId}}')}">
                <a href="#/search/{{folio.productId}}">{{folio.title}}</a>
            </li>
        </ul>
        <div ui-view></div>
    </div>

编辑:

问题已进一步诊断。由 ng 控制器生成的任何列表/锚点都不会响应范围之外的哈希更改,而静态链接则是。从 plunkr 链接中,“foo”和“bar”点击会触发控制器,但“abc”和“def”不会。请查阅。问题是如何使“abc”和“def”(动态链接)也响应变化。

http://plnkr.co/edit/ea1OHa?p=preview

4

1 回答 1

0

代码按照您的编码方式运行。您正在调用routeController控制器的构造函数,但它没有在其他任何地方调用(路由器也不会这样做)。

如果您需要routeController在每次路由更改时调用该函数,请考虑绑定到路由更改事件:

https://docs.angularjs.org/api/ngRoute/service/ $route

看看这个笨蛋。请注意,我将绑定到 stateChangeSuccess,因为您使用的是 ui-router 而不是 ngRoute。

http://plnkr.co/edit/CiYLqnqAzrXoouMSXkuk

于 2014-10-08T16:49:04.383 回答