加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:45:26 所属栏目:安全 来源:网络整理
导读:我今天试图更好地理解Ionic的脚手架,我注意到的一个事情是,他们给抽象的状态的“标签”一个url。 我只使用抽象状态,我使用一个空字符串作为url,我注意到,如果我不小心尝试导航到抽象状态(而不是子状态),我得到的错误: Cannot transition to abstract
我今天试图更好地理解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父级。它也可以是有用的,如果你想要分层控制器,其中父没有用于视图(不知道为什么你会想要这,但它是可能的)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读