相关疑难解决方法(0)

是否可以使用Angular创建树视图?

我希望在Web应用程序中以树形结构显示数据.我希望使用Angular来完成这项任务.

看起来ng-repeat将允许我遍历节点列表,但是当给定节点的深度增加时,我怎么能进行嵌套呢?

我尝试了以下代码,但HTML的自动转义阻止了它的工作.另外,结束ul标签位置错误.

我很确定我完全以错误的方式解决这个问题.

有任何想法吗?

angularjs

176
推荐指数
7
解决办法
19万
查看次数

使用嵌套对象时,如何在AngularJS中创建递归模板?

我正在尝试从JSON对象动态构建表单,该对象包含嵌套的表单元素组:

  $scope.formData = [
  {label:'First Name', type:'text', required:'true'},
  {label:'Last Name', type:'text', required:'true'},
  {label:'Coffee Preference', type:'dropdown', options: ["HiTest", "Dunkin", "Decaf"]},
  {label: 'Address', type:'group', "Fields":[
      {label:'Street1', type:'text', required:'true'},
      {label:'Street2', type:'text', required:'true'},
      {label:'State', type:'dropdown',  options: ["California", "New York", "Florida"]}
    ]},
  ];
Run Code Online (Sandbox Code Playgroud)

我一直在使用ng-switch块,但它对嵌套项变得难以维持,就像上面的Address对象一样.

这是小提琴:http: //jsfiddle.net/hairgamiMaster/dZ4Rg/

关于如何最好地处理这个嵌套问题的任何想法?非常感谢!

recursion angularjs

69
推荐指数
2
解决办法
4万
查看次数

服务更改时更新Angular JS指令

我试图按照这个SO答案解释如何使用指令呈现递归JSON结构.然而,与提供的答案,我的数据是不是在DOM加载和运行的角度,第一次知道.

相反,我的数据从HTML输入字段中检索并存储在Angular Service中(当用户提交表单时).

在修改服务数据时,如何使Angular Directive保持最新状态?


更新以回应答案

@musically_ut提供了一个很好的答案,但是却揭示了一个相关的问题,阻止了一个实现(在这里更新).

指令呈现包含Angular的HTML,该Angular {{expressions}}访问存储在其中的数据$scope.因为最初的解决方案是$watch服务准备好数据时.如何在指令渲染$scope 之前确保添加"新"数据?

架构和流程概述如下:

  1. ControllerA - >从用户那里获得输入
  2. ControllerA- >使用服务转换数据
  3. ControllerB- > $watch更改服务
  4. Directive- > $watch更改服务
  5. ControllerB - >添加数据 $scope
  6. Directive- > 使用指令显示转换后的数据(来自服务)

问题出在步骤5和6之间.指令{{expressions}}在ControllerB添加数据之前呈现$scope.即使这确实有效,但感觉太复杂和"hacky".

实际上,为了回归,我正在使用$watchControllerB来监听转换后的数据何时在服务中准备就绪.即使这感觉有点矫枉过正(该服务不会进行异步调用).

angularjs angularjs-directive

18
推荐指数
1
解决办法
1万
查看次数

ng-include,ng-template或directive:哪一个更适合性能

我想知道设计一个关于性能的角度应用程序的最佳方法,用于构建具有可重用小部件(如标题,侧边栏,页脚等)的HTML模板.基本上,主要内容是中心DIV,其内容在路径之间变化,页眉和页脚几乎总是相同,侧边栏在某些页面中可能会有所不同.

--- index.html

<body ng-cloak>
  <div data-ng-include data-src="'partials/template/header.html'"></div>
  <div data-ng-include data-src="'partials/template/sidebar.html'"></div>

  <div ng-view></div>

  <div data-ng-include data-src="'partials/template/footer.html'"></div>      
</body>
Run Code Online (Sandbox Code Playgroud)

- header.html

<div id="header">
   // ... HTML CONTENT 
</div>                
Run Code Online (Sandbox Code Playgroud)

在$ templateCache中使用header.html会更好吗?例如:

- header.html

<!-- CACHE FILE: header.html -->
<script type="text/ng-template" id="header.html">
    <div id="header">
       // ... HTML CONTENT 
    </div>                    
</scipt>
Run Code Online (Sandbox Code Playgroud)

或者我应该为每个小部件使用指令,例如:<appHeader></appHeader>......?

哪一个在性能,内聚性,可重用性和可伸缩性方面更好,以便在每个屏幕上嵌入这些小部件?

performance angularjs angularjs-directive angularjs-ng-include

14
推荐指数
3
解决办法
2万
查看次数

AngularJS - 在按钮上单击嵌套div模板

我正在研究一个模块,我将有div元素嵌套在div元素中,div元素也可以嵌套在div元素中.这些div元素将在用户单击按钮时创建.div可能最终看起来像这样:

  1. DIV1

    1.1.DIV2

    1.2.DIV3

    1.3.DIV4

       1.3.1 div5
    
       1.3.2 div6
    
    Run Code Online (Sandbox Code Playgroud)

2.div7

3.div8

等等......

这些div中的每一个都只是一个html模板,我想绑定每个div的数据,比如div有一个标题,所以我将绑定每个div.

我的第一个行动计划是使用ng-include并简单地由用户动态创建ng-includes,这样模板将通过ng-include加载.但是,正如我所知,由于依赖性问题,嵌套的ng-includes是不可能的.

我知道那些试图破解ng-includes嵌套的用户熟悉的库,但我正在寻找嵌套模板的好习惯,同时远离额外的库.

关于什么是动态嵌套模板的最佳方法的任何建议?

javascript angularjs

9
推荐指数
1
解决办法
876
查看次数

递归菜单指令

我正在尝试使用angularJS做一个递归菜单,但我不断收到错误:超出最大调用堆栈大小

我的指示:

angular.module("application").directive("navigation", [function () {
            return {
                restrict : 'E',
                replace : true,
                scope : {
                    menu : '='
                },
                template : '<ul><navigation-item ng-repeat="item in menu" submenu="item"></navigation-item></ul>',
                link : function ($scope, elem, attrs) {}
            }
        }
    ]);


angular.module("application").directive("navigationItem", [function () {

            return {
                restrict : 'E',
                replace : true,
                scope : {
                    submenu : '='
                },
                template : '<li>{{ submenu }}<navigation menu="submenu.Children"></navigation></li>',
                link : function ($scope, elem, attrs) {}
            }
        }
    ]);
Run Code Online (Sandbox Code Playgroud)

我的控制器:

app.controller('myController', ['$scope', function (ng) { …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

6
推荐指数
1
解决办法
1万
查看次数

Angular 1.5组件中的递归

有一些流行的递归角度指令Q&A在那里.一个优雅的解决方案是将递归功能抽象为服务并在指令'compile'阶段调用它:

堆栈溢出答案

如果我想在新的Angular 1.5 .component()而不是.directive()中使用相同的概念,最好的方法是什么?

recursion angularjs angularjs-directive angularjs-components

2
推荐指数
1
解决办法
2280
查看次数

如何使用多个级别的json重复到html表?

我有社交媒体统计的对象.我正在尝试将它们重复到表格中.这是我的傻瓜.

HTML:

<table>
      <tr ng-repeat="(metric, metricData) in data">
        <td>{{metric}}</td>
        <td>{{metricData}}</td>
      </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

控制器对象:

 $scope.data = { buzz:0, 
                  Delicious:121,
                  Facebook: 
                  { 
                    like_count: "6266",
                    share_count: "20746"
                  },
                  GooglePlusOne:429,
                  LinkedIn:820,
                  Twitter:4074
                };
Run Code Online (Sandbox Code Playgroud)

当我到达Facebook结果时遇到问题.在<td>整个对象中显示(因为它应该与我如何设置我的代码).但我宁愿发生的是重复该对象并显示单元格中的键和值.

我尝试做一些事情,看看是否metricData是一个对象,并做了某种ng-repeat.但我没有运气.关于如何在单元格中显示内部对象(键和值)的任何想法?

json html-table object angularjs angularjs-ng-repeat

1
推荐指数
1
解决办法
6511
查看次数