【问题标题】:how to load views in a base html view in angular?如何以角度加载基本html视图中的视图?
【发布时间】:2015-01-12 05:36:44
【问题描述】:

我需要在基本 html 文件中加载两个 html 文件。换句话说,我有基本 html 文件,其中有标题和竞争视图。我需要在标题和竞争视图中加载不同的 HTML 文件。 这是基本 HTML 文件

<div class="container">

    <div class="row page-header">
        <ui-view name="header"></ui-view>
    </div>

    <ui-view name="content"></ui-view>

    <div class="row">
        <div class="col-xs-12">
            <hr>
            <p class="text-center">Test Come</p>
        </div>
    </div>
</div>

在这个视图中

  <ui-view name="header"></ui-view>

在 header 我需要加载 header.html 和 &lt;ui-view name="content"&gt;&lt;/ui-view&gt; 在这个我需要加载 content.html http://plnkr.co/edit/nMhlb0R1q3BhWBHEjCks?p=preview 谢谢

【问题讨论】:

标签: javascript jquery angularjs angularjs-directive angularjs-ng-repeat


【解决方案1】:

你需要根据子状态更新你的状态:

var config = function($stateProvider,$urlRouterProvider) {
      $urlRouterProvider.otherwise('/');
       $stateProvider
       .state('main', {
        url: '/',
        views: {

            // the main template will be placed here (relatively named)
            '': { templateUrl: 'base.html' },


            // the child views will be defined here (absolutely named)
            'content@main': { template: 'contend.html' },

            // for column two, we'll define a separate controller 
            'header@main': { 
                templateUrl: 'header.html',

            }
        }

    });
};

【讨论】:

  • 能否发个链接
【解决方案2】:

您只能拥有一个 ng-view。 您可以通过多种方式更改其内容:ng-include、ng-switch 或通过 routeProvider 映射不同的控制器和模板。

UI-Router 是一个可以提供帮助的项目:https://github.com/angular-ui/ui-router 它的一个功能是多个并行视图

编辑

查看此plnkr

你的代码有问题

(1) 如果您使用的是 ui-router,则注入 $stateProvider 而不是 $routeProvider

(2) 使用 ui-view 代替 ng-view

(3) 您可以在同一模板级别拥有多个视图。如果您尝试在 ui-view 中定义 ui-view 并在单一状态下创建多个 ui-view,它将无法正常工作。

(4) ui-view 内的 ui-view 会创建另一个状态。

var app=angular.module("firstApp",['ui.router']);
var config = function($stateProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise("/");
   $stateProvider
    .state('base', {
      url: "/",
        views: {
        "content": { templateUrl: "contend.html" },
        "header": { templateUrl: "header.html" }
      }
    })
};
config.$inject = ['$stateProvider', '$urlRouterProvider'];

var loginCntrl=function($scope){

}
loginCntrl.$inject=['$scope']

app.config(config);
app.controller(loginCntrl);

【讨论】:

猜你喜欢
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 2015-01-01
相关资源
最近更新 更多