链接范围的属性是匿名函数

时间:2016-04-07 15:09:23

标签: javascript angularjs angularjs-directive angularjs-scope

我写了自定义指令。

在这段代码中,我希望从范围

获取属性
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-repeattrack 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>

并证明,在users集合中,我无法发挥作用 - enter image description here

0 个答案:

没有答案