使用UI-Router - 是否可以使用常规语法设置单个ui-view?

时间:2015-11-06 15:57:45

标签: angularjs angular-ui-router

在我的一个模板中,我有这段代码:

<h1>Route 1</h1>
<hr/>
<a ui-sref=".list">Show List</a>
<a ui-sref=".thing">thing7</a>

<div ui-view="left"></div>
<div ui-view="right"></div>

当我点击.list状态时 - 我确实有一个具有相应配置的控制器:

....state('route1.list',
{
    url: '/list',
    views:
    {

        'left@route1':
        {
            templateUrl: 'route1.list.html',
            controllerAs: "vm",
            controller: function ($scope)
            {
                this.items = ["a", "b", "c", "d"];
            }
        },
        'right@route1':
        {
            templateUrl: 'route1.list.html',
            controllerAs: "vm",
            controller: function ($scope)
            {
                this.items = ["1", "2", "3", "4"];
            }
        }
    }

})

这很好用,我确实看到两个视图都充满了适当的数据。

现在 - 当我点击.thing状态时 - 我只想要这个视图:

<div ui-view="right"></div>

要加载数据。

显然我应该使用这段代码:

.state('route1.thing',
{
    url: "/thing",
    views:
    {
        'right@route1':
        {
            templateUrl: 'route3.html',
            controllerAs: "vm",
            controller: function($scope)
            {
                this.thing = "I'm aaa";
            }
        }
    }
})

问题

当我在页面上有多个视图时,我只想触摸一个视图(而不是其他视图) - 我必须仍然使用此结构:

 .state('route1.thing',
    {
        url: "/thing",
        views:
        {
             ...
        }

我的意思是 - 是否有任何允许我将信息应用于特定视图的内容,例如常规格式:

.state('route1.thing', {
              url: "/thing",
              templateUrl: "route3.html",
              applyTo:"right@route1" , // <-- Something like this
              controller: function($scope){
               ....
              }
          })

0 个答案:

没有答案