angularjs – 为什么要给一个“抽象:真”状态一个url?

前端之家收集整理的这篇文章主要介绍了angularjs – 为什么要给一个“抽象:真”状态一个url?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天试图更好地理解Ionic的脚手架,我注意到的一个事情是,他们给抽象的状态的“标签”一个url。

我只使用抽象状态,我使用一个空字符串作为url,我注意到,如果我不小心尝试导航到抽象状态(而不是子状态),我得到的错误

Cannot transition to abstract state ‘[insertAbstractStateHere]’

编辑:

“此外,在实验中,当我尝试为我的抽象状态(在离子之外)分配一个url并且仍然渲染嵌套状态视图时,我得到一个大鹅蛋,没有什么显示

上面引用的语句是false!我在Plunker尝试了,并且嵌套的状态确实出现了。

angular.module('routingExperiments',['ui.router'])
      .config(function($urlRouterProvider,$stateProvider) {

    $stateProvider

      .state('abstractExperiment',{
        abstract: true,url: '',//<--- seems as if any string can go here.
        templateUrl: 'abstractExperiment.html'
      })
      .state('abstractExperiment.test1',{
        url: '/test1',templateUrl: 'abstractTest1.html'
      });
  });

显然我的确做错了。所以我的新问题是:

有什么理由为什么在使用抽象状态时使用命名状态而不是空字符串,还是只是一个风格选择?

你将使用抽象状态的原因是当你的一部分你的url不可导航时保持你的定义干燥。例如,假设您有一个类似以下的网址方案:
/home/index
/home/contact

不过,无论在您的设计中出于什么原因,此网址无效(即网页没有用途):

/home

现在你可以简单地为这种情况创建两个状态,使用完整的URL,然而,然后你将写/ home /两次,并且描述有点复杂。最好的想法是创建一个主抽象父对象,其他两个状态是子对象(对于ui-router文档):

$stateProvider
    .state('parent',{url: '/home',abstract: true,template: '<ui-view/>'} )
    .state('parent.index',{url: '/index',templateUrl: 'index.html' })
    .state('parent.contact',{url: '/contact',templateUrl: 'contact.html' })

请注意,在父状态内,我们分配一个模板,其唯一的子视图是ui-view。这确保孩子们被呈现(并且可能是你的孩子为空的原因)。

有时你可能注意到使用一个抽象状态与一个空白的url。最好使用这个设置是当你需要父母的解决方案。例如,您可能需要某些特定的服务器数据用于您的一部分州。因此,不要将相同的resolve函数放入每个状态,您可以使用所需的解析创建一个空的url父级。它也可以是有用的,如果你想要分层控制器,其中父没有用于视图(不知道为什么你会想要这,但它是可能的)。

原文链接:https://www.f2er.com/angularjs/146069.html

猜你在找的Angularjs相关文章