角度 ui 路由器命名视图抽象控制器不触发



当子视图也实现控制器时,在抽象命名视图中具有控制器似乎不会触发该控制器,只有子控制器会触发。我的设置如下:

$stateProvider
      .state('app', {
        abstract: true,
        views : {
          header: {
            template: "<p>My header</p>"
          },
          section: {
            template: "<ui-view />",
            controller: function () {
              alert('loaded main control');
            }
          }
        }
      })
      .state('app.home', {
        url: '',
        views: {
          'section@': {
            template: "<p> My initial content here </p>",
            controller: function () {
              alert("loaded home control");
            }
          }
        }
      })

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

在我看来,上面的演示应该触发两个警报,为什么没有发生这种情况?

app.home中,您将section@用作视图名称,这是一个绝对匹配,然后与抽象app状态中定义的section视图冲突。

事实上,第一种section观点似乎毫无用处。您可以尝试以下代码片段。

$stateProvider
  .state('app', {
    abstract: true,
    views : {
      header: {
        template: "<p>My header</p>",
        controller: function () {
          alert("loaded main control");
        }
      }
    }
  })
  .state('app.home', {
    url: '',
    views: {
      'section@': {
        template: "<p> My initial content here </p>",
        controller: function () {
          alert("loaded home control");
        }
      }
    }
  })

有关更多详细信息,请参阅 ui 路由器指南的"多个命名视图"部分。

最新更新