Angularjs 具有角度布线的多零件视图

Angularjs 具有角度布线的多零件视图,angularjs,routing,multiview,Angularjs,Routing,Multiview,我正在尝试生成以下单页应用程序,其UI如下所示: 左侧是项目图像列表,每当单击项目时,右侧将填充项目的详细信息、较大的图像等-您已经看到并知道我在说什么。我还希望应用适当的路由,以便在访问#/item/:itemID时,视图将相应地响应,并呈现详细的项目。项目列表仍应显示,不改变位置(可垂直滚动) 因为我对angular还不太熟悉,所以我还在研究如何处理这个问题。我正在考虑在路线中使用相同的模板和不同的控制器: var app = angular.module('app', []); app

我正在尝试生成以下单页应用程序,其UI如下所示:

左侧是项目图像列表,每当单击项目时,右侧将填充项目的详细信息、较大的图像等-您已经看到并知道我在说什么。我还希望应用适当的路由,以便在访问
#/item/:itemID
时,视图将相应地响应,并呈现详细的项目。项目列表仍应显示,不改变位置(可垂直滚动)

因为我对angular还不太熟悉,所以我还在研究如何处理这个问题。我正在考虑在路线中使用相同的模板和不同的控制器:

var app = angular.module('app', []);

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/', {
    templateUrl: 'items.html' ,
    controller: 'ItemsController'
  }).when('/item/:itemID', {
    templateUrl: 'items.html' ,
    controller: 'ItemDetailsController'
  }).otherwise({ redirectTo: '/' });
}]);
我假设我的模板应该包括视图的两侧(列表和详细信息),路由器应该调用同一个控制器,控制器应该检查
#/item/:itemID
路由并呈现详细信息视图(如果存在)。使用
$http
获取实际项目,单击(然后呈现)时获取项目详细信息


我没有使用足够的
ngInclude
ngView
来选择正确的工具集,因此我希望您能提供一些关于如何继续操作的信息-谢谢。

为同一视图或同一局部视图使用不同的控制器是多余的。相反,您只需对两条路线使用相同的控制器,如

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/', {
    templateUrl: 'items.html' ,
    controller: 'ItemsController'
  }).when('/item/:itemID', {
    templateUrl: 'items.html' ,
    controller: 'ItemsController'
  }).otherwise({ redirectTo: '/' });
}]);
因此,当导航到
/

$selectedItem = null;
/item/1

$selectedItem = Item.get({ id:$routeParams.itemId })

将加载包含项目详细信息的详细信息视图。

为同一视图或同一局部视图使用不同控制器将是多余的。相反,您只需对两条路线使用相同的控制器,如

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/', {
    templateUrl: 'items.html' ,
    controller: 'ItemsController'
  }).when('/item/:itemID', {
    templateUrl: 'items.html' ,
    controller: 'ItemsController'
  }).otherwise({ redirectTo: '/' });
}]);
因此,当导航到
/

$selectedItem = null;
/item/1

$selectedItem = Item.get({ id:$routeParams.itemId })

将加载包含项目详细信息的详细信息视图。

有几十种方法可以实现这一点,但如果应用程序相当简单:

<!-- Static content here -->
<div ng-repeat="image in imageLinks">
    <div (ul/li, whatever) href="/myRouting/{{image.id}}">{{image.image}}</div>
</div>
<-- End Static Content --->

<div class="middleContentWrapper">
    <div ng-view ></div> <----your 'content area'
</div>

{{image.image}

有几十种方法可以实现这一点,但如果应用程序相当简单:

<!-- Static content here -->
<div ng-repeat="image in imageLinks">
    <div (ul/li, whatever) href="/myRouting/{{image.id}}">{{image.image}}</div>
</div>
<-- End Static Content --->

<div class="middleContentWrapper">
    <div ng-view ></div> <----your 'content area'
</div>

{{image.image}

即使是同一个控制器,是否重新渲染模板?@gion_13是的,必须重新渲染视图以填充模型数据即使是同一个控制器,是否重新渲染模板?@gion_13是的,必须重新渲染视图以填充模型数据