当前位置: 首页 > 面试题库 >

为什么要给“抽象:真实”的网址指定网址?

颛孙子民
2023-03-14
问题内容

今天,我一直在摆弄ui-router,以更好地了解Ionic的脚手架,而我注意到的一件事是,它们为“选项卡”的抽象状态提供了url。

我仅有两次使用抽象状态时,我使用一个空字符串作为url,并且注意到如果我不小心尝试导航到抽象状态(而不是子状态),则会收到错误消息:

无法转换为抽象状态“ [insertAbstractStateHere]”

编辑:

“此外,在实验中,当我尝试为我的抽象状态(在Ionic之外)分配一个url并仍然渲染嵌套状态视图时,我得到了一个很大的鹅蛋。什么都没有出现。”

以上引用的陈述是错误的!我在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

但是,无论出于何种原因在您的设计中,此url都是无效的(即,对页面无用):

/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父项包含所需的resolve,而不是将相同的resolve函数放入每个状态。如果您要使用层次结构的控制器(父级没有用到视图)(不确定为什么要这样做,但是这是合理的),这也可能很有用。



 类似资料:
  • 问题内容: 我现在正在学习Java,并且是Abstract的一部分。我读到一个奇怪的部分,我有一个抽象类,其中不包含任何abstarct方法。 他们为什么要使用此类课程? 问题答案: 为了防止实例化该类并将其仅用作基类。子类可以使用抽象类中定义的常规方法。 例如,创建的实例没有任何意义。但是所有车辆都可以重复使用一种通用方法。

  • 问题内容: 我正在开发ROR Web应用程序。我的网页网址如下所示- 在这里,我知道Advertiser_id是2102,但我不明白 #/仪表板 指向什么? 问题答案: URL后面的符号部分通常不会在页面请求中发送到服务器。如果您打开Web检查器并查看该页面的请求,您将看到该部分根本不包含在请求中。 在常规(基本HTML)网页上,该符号可用于链接到页面中的某个部分,以便在加载页面后浏览器跳至该部分

  • 问题内容: 我有一种用于获取xml文件的数据获取方法。 我的问题是:如果文件名中存在ASCII范围之外的转义(十六进制表示法)或未转义utf-8字符,则jQuery会以某种方式向网址添加参数()。如果文件名中不包含该范围内的字符,则一切正常。 类型设置为,因此不应混淆类型。xml文件的标题也已适当设置。 我可以从控制台中看到jQuery引发错误,但是我不确定问题出在哪里。 可能是文件名格式出现问题

  • 在抽象工厂模式中,涉及的主要实体是 抽象基地工厂 混凝土工厂每个延伸抽象基地工厂 客户端代码 基础产品 扩展基础产品的具体产品类别 我看过各种实现,并观察到客户机代码了解具体的工厂。根据我在不同地方看到的模式的共同定义,如下所示 定义一个用于创建对象的接口,但让子类来决定要实例化哪个类。 根据我的观察,是作为抽象工厂方法中的抽象方法实现的。它公开了一个非抽象的公共方法,比如,从中调用方法。根据具体

  • 问题内容: 我有一个带注释的实体。 如果我负责创建脚本,为什么要指定何时可以使用关键字在数据库中创建列?是否有任何示例显示在字段中使用此属性的好处? 问题答案: 更好的错误消息和错误处理,尤其是如果您还添加了JSR303 @NotNull批注 。 如果您将列创建为,但不告诉JPA它不是null,则JPA会假定null值可以。当您尝试使用空值保存对象时,它将继续将其发送到数据库,并且您会收到数据库级

  • 本文向大家介绍python实现下载指定网址所有图片的方法,包括了python实现下载指定网址所有图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现下载指定网址所有图片的方法。分享给大家供大家参考。具体实现方法如下: 运行结果如下: num of download pictures is 19 希望本文所述对大家的Python程序设计有所帮助。