AngularJS子视图未显示

时间:2018-03-25 15:13:21

标签: javascript html angularjs angular-ui-router childviews

我正在尝试渲染子视图。但是它没有显示,下面是一个代码示例。我看到的大多数示例都将整个状态模板放在一个模板中;但是我在不同的模板中有几个视图,它们组成了每个状态模板。

.state({
          name: 'search',
          url: '/x',
          abstract: true,
          views: {
            'searchBar': {
              templateUrl: "template/template.html",
              controller: "searchBar"
            } 
          }
        })
        .state({
          name: 'search.final',
          url: '^/details', 
          params: {
            Data: "hello World"
          },
          views: {
            'dashb': {
              templateUrl: 'template/dashb.html'
            },
           'sidebar': {
              templateUrl: 'template/sidebar.html'
            },
          }

然后我的index.html如下

<div>
    <div class="row">
      <div class="col-lg-3">
        <div ui-view="searchBar"></div>
        <br>
        <div ui-view="sidebar"></div> 
        <br>
      </div>
      <div class="col-lg-9" ui-view="dashb"></div>
    </div>
  </div>

我在searchBartemplate中 <ui-view></ui-view>用于插入子视图,表示sideBar和dashb

在控制器中我有这个:

$state.go("search.final" , {Data:"Byee"})

但是我没有渲染子视图..任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

我明白了。我们需要在子视图的视图名称的末尾附加@。 :)

.state({
          name: 'search',
          url: '/x',
          abstract: true,
          views: {
            'searchBar': {
              templateUrl: "template/template.html",
              controller: "searchBar"
            } 
          }
        })
        .state({
          name: 'search.final',
          url: '^/details', 
          params: {
            Data: "hello World"
          },
          views: {
            'dashb@': {
              templateUrl: 'template/dashb.html'
            },
           'sidebar@': {
              templateUrl: 'template/sidebar.html'
            },
          }