javascript - Angular UI Router - 继承状态下的 View

标签 javascript angularjs angular-ui angular-routing angular-ui-router

编辑:根据@actor2019 的回答,我想更新我的问题以更好地解释问题:

使用 Angular UI-Router (v0.0.2),我已将应用设置为在主要“页面”/状态之间正确导航,同时继承基本状态。

Index.html:

<div ui-view></div>

base.html:

<!-- Header -->
<div>
    <!-- Header markup -->

    <!-- Search View -->
    <div ui-view="search"></div>
</div>

<!-- Page Content view -->
<div ui-view></div>

问题出在 app.js 文件中。当我将 views 参数添加到 base 状态时,一切都停止工作(100% 空白页)。如果没有该参数,页面会正确呈现,但我没有搜索 View 。

app.js:

$urlRouterProvider.otherwise('/');

//
// Now set up the states
$stateProvider
  .state('base', {
    abstract: true,
    templateUrl: 'views/base.html',
    views: {
      "search": {
        templateUrl: "views/search.html"
      }
    }
  })
  .state('base.home', {
    url: "/",
    templateUrl: "views/home.html"
  })
  .state('base.page2', {
    url: "/page2",
    templateUrl: "views/page2.html"
  });

我如何将 View 添加到这个父“基础”状态?

enter image description here

更新: @actor2019 的回答问题heresearch View 在状态更改时重新初始化。我希望离开基本级别的 View 在状态更改时持续存在。

最佳答案

第一个明显的错误:

您不能在使用 View 时在状态上指定 Controller 和模板。它们是互斥的...

这是因为当状态上没有“ View ”但有 Controller 和模板时,UI-Router 会自动创建“ View ”属性并将这些属性拉到“空” View 中...

.state('base', {
  abstract: true,
  templateUrl: 'views/base.html', //Can't do this
  views: { // when this is there.
    "search": {
      templateUrl: "views/search.html"
    }
  }
})

改为:

.state('base', {
  abstract: true,
    views: {
      "": {
        templateUrl: 'views/base.html'
      },
      "search": {
        templateUrl: "views/search.html"
      }
    }
  })

第二个问题:

View 定位如何与嵌套 View 等一起工作不是很合乎逻辑,如果您一直将自己限制在一个 View 中的一个 View 中,它可能会很好地工作,但是当您开始使用多个命名 View 时,一切都会变得困惑...在顶部添加未命名的 View ,很多人会迷路...

View 在 UI-Router 中的工作方式是 UI-Router 中最糟糕的部分......

举个例子,我什至不完全确定从抽象父状态定位搜索 View 的方式......可能是:

.state('base', {
  abstract: true,
    views: {
      "": {
        templateUrl: 'views/base.html'
      },
      "search@base": {
        templateUrl: "views/search.html"
      }
    }
  })

如果它甚至可以工作...或者您可以将搜索 View 移出 base.html,但我想您将其添加到那里是有原因的。

整体 View 概念是我最终写下 https://github.com/dotJEM/angular-routing 的最大原因相反。

关于javascript - Angular UI Router - 继承状态下的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473096/

相关文章:

javascript - 组件初始化之前 Angular 加载异步数据

javascript - AngularJs | ng-click 不触发

angularjs - Angular ui 掩码不适用于 angular-ui 日期选择器

angularjs - Angular Router - $watch 状态参数不起作用

javascript - 了解 $.promise 的工作方式类似于 transitionEnd

Javascript/将CSS样式字符串转换为JS对象

javascript - iframe 中不解析 Css 和 Javascript

asp.net-mvc - 如何为除/api 路由之外的所有内容设置 IIS 重写规则

angularjs - 如何要求至少 1 个带有 checklist-model 的复选框来进行 AngularJS 表单验证?

angularjs掩码覆盖字符