我已将我的代码简化为此示例,以显示我想要完成的任务。
控制器:
angular
.module('myApp')
.controller('myController', myController);
myController.$inject = ['$scope'];
function DashboardController($scope) {
$scope.someNumbers = [ 'One', 'Two', 'Three', 'Four', 'Five' ];
}
视图:
<table class="table table.hover">
<tr class="table-row" ng-repeat="num in someNumbers track by $index" all-numbers="someNumbers" dyn-rows></tr>
</table>
指令:
angular
.module('myApp')
.directive('dynRows', function() {
return {
restrict: 'A',
template: '<td>{{ allNumbers }}</td',
scope: {
allNumbers: "=",
},
link: function(scope,elem,attrs){
// magic has to happen here?
}
}
}
})
如果我理解得很好,我现在在视图中有5行,因为我的指令中有ng-repeat
和5 models
。所有5个指令模型都有allNumbers
数组。
我想要完成的是,对于每个新行,我从someNumbers
数组中获得一个值。 first row
first value
(一个),second row
second value
(两个)等等...... < / p>
我认为魔术必须发生在指令link
内部或控制器视图内的指令链接()内部。经过几个小时的搜索和尝试循环和索引播放后,我似乎无法找到任何信息如何实现这一目标。
答案 0 :(得分:2)
属性all-numbers="someNumbers"
应为all-numbers="num"
,以便传入索引的值,而不是整个数组。
答案 1 :(得分:0)
在回答我自己的问题并在Daniel的帮助下,我找到了解决问题的最佳方案。
正如我所提到的,上面的例子只是我真实代码的一个小例子。
在我的实际代码中,我有多个数组(长度相同)。我想每个ngRepeat发送一个每个数组的值。
原始代码行
<tr class="dashboard-table-row" ng-repeat="labels in properLabels track by $index" dashboard-table all-labels="properLabels" all-years="properYears" all-data="properData"></tr>
已更改为
<tr class="dashboard-table-row" ng-repeat="labels in properLabels track by $index" dashboard-table all-labels="{{properLabels[$index}}" all-years="properYears" all-data="{{properData[$index]}}"></tr>
添加[$index]
我传递数组的地方只发送数组中N索引位的值到我的指令。
希望这有助于未来的人们!