2016-08-04 29 views
0

這很奇怪。在我投入td之前沒有顯示角度ng-repeat數據

我有以下表指令:

/** 
* Created by root on 8/4/16. 
*/ 
angular.module('LBTable').directive('lbTable', ['tabService', function (tabService) { 
    return { 
     restrict: 'E', 
     roles: 'all', 
     templateUrl: 'js/helpers/LBTable/directives/lb-table/lb-table.html', 
     scope: { 
      tableData: '=', 
      tableFields: '=', 
      actionElement: '=' 
     }, 
     link: function (scope, element, attrs) { 
      scope.filterFields = []; 
      findFilterFields(); 
      function findFilterFields() { 
       scope.tableFields.forEach(function (x) { 
        if (x.sortable == true) { 
         scope.filterFields.push(x.fieldKey); 
        } 
       }); 
      } 
     } 
    } 
}]); 

這有以下的html:

<table id="table-client" class="table table-responsive" > 
<thead> 
<tr> 
    <th ng-repeat="field in tableFields" translate="{{field.headerTitle | translate}}"></th> 
    <th class="text-right" 
     translate="TERMS.ADMINISTRATION" ng-if="actionElement != null"></th> 
</tr> 
</thead> 
<tbody> 
<tr ng-repeat="item in tableData track by item.id"> 
    <lb-table-element element-data="item" table-fields="tableFields"></lb-table-element> 
</tr> 
</tbody> 

在此你可以看到另一個指令:lbTableElement

該指令看起來像這樣:

/** 
* Created by root on 8/4/16. 
*/ 
angular.module('LBTable').directive('lbTableElement', ['tabService', function (tabService) { 
    return { 
     restrict: 'E', 
     roles: 'all', 
     replace: true, 
     templateUrl: 'js/helpers/LBTable/directives/lb-table-element/lb-table-element.html', 
     scope: { 
      elementData: '=', 
      tableFields: '=' 
     }, 
     link: function (scope, element, attrs) { 
      var data = scope.elementData; 
     } 
    } 
}]); 

並具有以下HTML:

<td ng-repeat="field in tableFields"> 
    {{elementData[field.fieldKey]}} 
</td> 

Nnow的tableData陣列由1240對象。但是當我運行這個沒有數據顯示。

但是如果我重新格式化我的HTML看起來像這樣:

<td> <lb-table-element element-data="item" table-fields="tableFields"></lb-table-element></td> 

對象item不再undefined和數據顯示。

有誰能告訴我爲什麼?

Fiddle for you to try out (simpler example)

+0

td的模板不應該是'{{field.fieldKey}}'而不是'{{elementData [field.fieldKey]}}'嗎?或數據「> {{field.fieldKey}}中的'' – thepio

+0

@thepio no elementData是該項目,然後fieldKey是它們在對象im拔出時的關鍵字。從來沒有真正的問題是爲什麼你需要​​ –

+0

我可能只是累了,但你重複'tableFields'和裏面,你試圖顯示elementData這可能是一個數組,這就是爲什麼沒有打印出來,然後你是試圖看看它的關鍵? – thepio

回答

1

所有的意見後,我意識到是什麼導致你的麻煩。你需要通過設置指令爲屬性而不是像這樣的元素來解決這個問題:

<td lb-table-element element-data="item" table-fields="tableFields"></td> 

然後你可以重複數據在你的指令或重複的元素本身。恐怕沒有其他解決方案。