我写了自定义指令。
在这段代码中,我希望从范围
获取属性return {
restrict: 'A',
scope: {
user: '=',
startDate: '=',
daysInRow: '='
},
link: function (scope, element, attrs) {
days = $rootScope.days[scope.user.id]; <-- here Id is undefined
我想从user
获取id
,但user
是&#34;匿名函数&#34;。
其他属性&#39; startDate&#39;和&#39; daysInRow&#39;正确绑定
我知道正确绑定模板中的值
<div am-calendar-row user="user" start-date="calendar.startDay" days-in-row="calendar.numberDays"></div>
我的问题是什么?
用户对象:
admin:false
approver:false
defaultNotificationRecipient:false
defaultRecipient:false
defaultedNotifiers:null
defaultedRecepients:null
email:"sergiy.aleks@gmail.com"
endDate:Fri Feb 21 2014 14:00:00 GMT+0200 (FLE Standard Time)
id:4
initialValue:8
name:"Sergiy Aleks"
requestToUserCount:0
roles:Array[0]
startDate:Mon Sep 27 2010 15:00:00 GMT+0300 (FLE Daylight Time)
unAnsweredRequestToUserCount:0
userId:4
userRequestCount:0
vacationRate:0
然后console.log(scope.user);
返回:
function (a){return h(c,a)}
更新:正如我所注意到的,这是由ng-repeat
和track by $index
引起的。当我设置track by user.id
时,我又收到了另一个错误:
不允许在转发器中重复。使用&#39;跟踪&#39;表达式以指定唯一键。 Repeater:user in(filteredUsers =(users | orderBy:&#39; name&#39; | filter:inSelectedGroups:user | filter:workTheseMonths))track by user.id,Duplicate key:undefined,Duplicate value:{&#34 ; $$状态&#34; {&#34;状态&#34;:0}}
但是id
s应该是唯一的,所以这个错误对我来说是未知的。
在ng-repeat
中,我使用user
值传递给我的指令。
更新2:
当我使用track by $index
时,只有前4位用户返回scope.user
作为函数,其他用户返回对象。
更新3:
<div class="row" ng-repeat="user in (filteredUsers = (users | orderBy:'name' | filter:inSelectedGroups:user | filter:workTheseMonths) ) track by user.id" ng-if="!user.visible">
...
<div class="calendar-slider date-wrap" style=" margin-left: 15px;" ng-style="calendarOffset">
<div class="calendar-wrapper">
<div am-calendar-row user="user" start-date="calendar.startDay" days-in-row="calendar.numberDays"></div>
</div>
</div>
</div>