相关疑难解决方法(0)

UI-Router - 状态变化时范围没有被破坏?

我是AngularJS和ui-router的新用户,我正在试图调整范围的管理方式.我期望当状态改变变为非活动状态时,活动控制器的范围将被销毁,但是,似乎并非如此.

我已经从UI-Router的网站修改了这个例子来说明情况(参见下面的plunker).每次触发state route1.list/route2.list时,它们都会在$ rootScope上发出一个事件.收到事件后,将在控制台上打印调试语句.

通过在两个状态之间切换几次,观察到先前初始化的所有控制器都响应该事件.所以看来它们创建的范围从未被破坏过.这种行为有望吗?如果是这样,我该怎么办才能让只有主动控制器响应一个事件?

Plunker

在控制台上打印调试消息: 在此输入图像描述

码:

var myapp = angular.module('myapp', ["ui.router"])
myapp.config(function($stateProvider, $urlRouterProvider){

// For any unmatched url, send to /route1
$urlRouterProvider.otherwise("/route1")
Run Code Online (Sandbox Code Playgroud)

这是route1

$stateProvider
  .state('route1', {
      url: "/route1",
      templateUrl: "route1.html"
  })
    .state('route1.list', {
        url: "/list",
        templateUrl: "route1.list.html",
        controller: function($rootScope, $scope){
          $rootScope.$emit("eventCT1");
          $rootScope.$on("eventCT2", fn);
          function fn () {
            console.log("Controller 1 receives an event emitted by Controller 2");
          }
          $scope.items = ["A", "List", "Of", "Items"];
        }
    })
Run Code Online (Sandbox Code Playgroud)

这是路线2

  .state('route2', {
      url: "/route2",
      templateUrl: "route2.html"
  })
    .state('route2.list', {
        url: "/list",
        templateUrl: …
Run Code Online (Sandbox Code Playgroud)

state angularjs angular-ui angular-ui-router

8
推荐指数
1
解决办法
7512
查看次数

ui.router不重新加载控制器

我正在使用Ionic Framework开发一个应用程序,并且有多个视图.路线名称是app.view1app.view2.我转换到控制器使用的下一个视图$state.go("app.view2"),当我点击后,app.view1的控制器不再执行,这在我的应用程序中非常重要.

请告诉我如何在每次路由时执行控制器.

javascript angularjs ionic-framework

2
推荐指数
1
解决办法
1479
查看次数