0

我有模板(不是由路由器定义的),其中有 2 个链接(锚点),它改变了变量

<a ng-href="#/service/service1"
   ng-click="activeService='minecraft'">

然后我有 2 张图片 - 它们的类取决于 ng-click 设置的变量

ng-class="activeService != 'none' ? { true: 'service-maximize-animate', false: 'service-minimize-animate'}[activeService=='service1'] : ''"

这完美地工作。但是当我在浏览器中按下后退按钮或直接更改 URL 地址时,路由更改、ng-view更新,但图像(在未由路由器设置的全局模板中)不会更新(它们不在ng-view(模板)中)

在这里我遇到了问题-我必须使用controller,但路由器不能使用controller,因为它的范围仅适用于模板(ng-view)。

我也尝试使用ng-controller,但在路由更改时不会调用它。

有什么办法,可以解决吗?另外,我想知道是否有任何方法可以使ng-view可读性更好,现在太可怕了:)

谢谢, 米哈尔·霍格

编辑:jsfiddle:http: //jsfiddle.net/5rzGU/9/

4

2 回答 2

0

jsfiddle/plunker 在这里会很有帮助。

据我了解,这两个控制器是独立的。当您在 url 中返回或转发时,只会ng-view更改,因为只ng-view处理路由器。other controller不知道是怎么ng-view's controller回事。ng-view controller您需要从向发送消息other controller,如下所述:AngularJS:如何在控制器之间传递变量?

或者您可以考虑将第二个控制器转换为指令。

至于提高ng-view的可读性。考虑将其拆分为更小的模块——可能的指令。

于 2013-06-01T19:55:51.960 回答
0

我使用 Angular 的观察者系统解决了这个问题。在控制器中,在路由更改后调用,它广播了一个事件

$rootScope.$broadcast('event');

在控制器中,它的 $scope 与路由器不同,它监听event

 $scope.$on('event', function() {
       //code
 });

希望它可以帮助任何人:)

于 2013-06-02T13:53:39.363 回答