首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RouteProvider定义ng-view="NAME“

从RouteProvider定义ng-view="NAME“
EN

Stack Overflow用户
提问于 2013-10-09 01:32:59
回答 2查看 3.7K关注 0票数 5

我对角度非常陌生,对于如何将模板或URL发送到ng视图,我有一个小问题。但是,我打算做的方式,我可能不得不在我的基本模板的ng-视图。

当我的模板库是这样的时候:

代码语言:javascript
复制
<body>
   <div ng-view></div>
</body>

我的JS看起来:

代码语言:javascript
复制
var app = angular.module('myApp',[])
.config(['$routeProvider', '$locationProvider', '$httpProvider', function($routeProvider, $locationProvider, $httpProvider) {
    $routeProvider
    .when('/home', {
        templateUrl: '/contato'
    })
(...)

在只有一个ng视图的情况下,可以很好地加载ng视图中的URL,如果我需要加载一个以上的ng视图,情况如何?(例如: ng-view="area1“和ng-view="area2")

我在每个$routeProvider上都试过了,但都无法工作:

代码语言:javascript
复制
    $routeProvider
    .when('/home', {
        area1: {templateUrl: '/path1'},
        area2: {templateUrl: '/path2'}
})

如何正确地分别设置每个ng视图?

感谢你的帮助!谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 03:33:38

不幸的是,正如您现在所知道的,页面上不能有多个ng视图。您应该看看来自AngularUI的UI-路由器,它做的正是您想要的(https://github.com/angular-ui/ui-router)。

他们的文档(https://github.com/angular-ui/ui-router#multiple--named-views)中的一个例子:

设置

代码语言:javascript
复制
var myApp = angular.module('myApp', ['ui.router']);

html

代码语言:javascript
复制
<body>
    <div ui-view="viewA"></div>
    <div ui-view="viewB"></div>
    <!-- Also a way to navigate -->
    <a ui-sref="route1">Route 1</a>
    <a ui-sref="route2">Route 2</a>
</body>

模板1

代码语言:javascript
复制
<h1>State 1</h1>

模板2

代码语言:javascript
复制
<h1>State 2</h1>

js

代码语言:javascript
复制
myApp.config(function($stateProvider, $routeProvider) {

  $stateProvider
    .state('index', {
      url: "",
      views: {
        "viewA": { template: "index.viewA" },
        "viewB": { template: "index.viewB" }
      }
    })
    .state('route1', {
      url: "/route1",
      views: {
        "viewA": { templateUrl: "route1.viewA.html" },
        "viewB": { templateUrl: "route1.viewB.html" }
      }
    })
    .state('route2', {
      url: "/route2",
      views: {
        "viewA": { templateUrl: "route2.viewA.html" },
        "viewB": { templateUrl: "route2.viewB.html" }
      }
    });
});

在这里,您可以在状态级别指定一个控制器,该控制器对两个视图都有效,或者在视图级别上有效,以便设置两个不同的控制器。

编辑:来自ui-路由器文档的实况演示(http://plnkr.co/edit/SDOcGS?p=preview)

票数 4
EN

Stack Overflow用户

发布于 2013-10-09 02:32:56

基本上你不能有两个ng视图。看一看this,所以问题:

你可以只看一次。 您可以通过几种方式更改其内容: ng-include、ng-switch或通过routeProvider映射不同的控制器和模板。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19261498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档