Angularjs 复杂布局应用

Posted

技术标签:

【中文标题】Angularjs 复杂布局应用【英文标题】:Angularjs complex layout application 【发布时间】:2013-10-24 04:26:14 【问题描述】:

我正在尝试使用 Angular Seed 作为默认结构将 angularjs 设置到我的 Rails 4 应用程序中,但我很难理解这一点。

我的布局由两部分组成。第一部分(左侧)包含产品列表:

%ul
  %li 'ng-repeat' => 'product in products | filter:search' 
    %a 'ng-click' => 'open(tier)' 
      %img 'ng-src' => ' tier.logo ' 

另一部分在这里显示产品的详细信息,但也显示产品版本以及创建新产品的表单。那时我真的很困惑。到目前为止,我使用ng-switch helper 来获取右侧的产品详细信息:

%ng-switch 'on' => 'details()' 
  %div 'ng-switch-when' => "true" 
    %header
      %span
        .h3  opened.name 
    .panel-body
      .tab-content
        .tab-pane.active
          %section.scrollable
            %img 'ng-src' => ' opened.logo_large ' 

我的控制器看起来像这样:

controller('TiersController', ['$scope', '$routeParams', 'Tiers', 'ngProgress', '$timeout', function($scope, $routeParams, Tiers, ngProgress, $timeout) 
  $scope.tiers = Tiers.query();

  $scope.open = function(tier)
    if( $scope.isOpen(tier) )
      $scope.opened = undefined;
    else
      $scope.opened = tier;
    
  ;

  $scope.isOpen = function(tier)
    return $scope.opened === tier;
  ;

  $scope.details = function()
    return $scope.opened !== undefined;
  ;

  $scope.close = function()
    $scope.opened = undefined;
  ;
])

到目前为止,左侧(产品列表)和右侧(详细信息)都在同一个视图文件中。当我单击产品并显示其详细信息时,它工作正常。但是,如果我想在右侧注入另一个视图(例如表单)怎么办?如何在此产品布局中插入某种部分? 问题是,出于可维护性目的,我不想将所有不同的视图写入同一个文件。

希望我很清楚。非常感谢您的帮助

【问题讨论】:

听起来您正在寻找 ng-include。它就像它听起来的那样,它在当前模板中包含另一个模板。 非常感谢您的帮助。我使用angular ui-router 解决了这个问题,它允许我拥有嵌套的视图路线。再次感谢 【参考方案1】:

使用 angular ui-router https://github.com/angular-ui/ui-router

解决了问题

【讨论】:

以上是关于Angularjs 复杂布局应用的主要内容,如果未能解决你的问题,请参考以下文章

我应该将 AngularJS 与 PHP 框架混合使用吗? [关闭]

我应该将 AngularJS 与 PHP 框架混合使用吗? [关闭]

Angularjs Ionic - 移动设备和平板电脑的不同布局

技术干货利用AngularJS开发复杂web应用

AngularJS 实现弹性盒子布局

AngularJS 实现弹性盒子布局