2014-11-23 2 views
0

Как правильно передать элемент ng-repeat в качестве параметра функции? Я показываю как соответствующие html, так и js также ошибку, которую он дает.Использование элемента в ng-repeat в качестве параметра в функции

HTML:

<div class="swiper-slide" data-ng-repeat="items in (ctrl.cur_level || ctrl.first_level)"> 
       <div class = "item" data-ng-repeat="item in items" data-ng-click="!ctrl.isWorkDay(item.lane.title)||ctrl.select(item)" data-ng-disabled="isWorkDay(item.lane.title)" > 
        <div class="{{ctrl.workingDayClass(item.lane.title)}}" > 
        <button>{{ item.num }}</button> 
        <span data-ng-if="item.lane" class="title">{{ item.lane.title }}</span> 
        </div> 
       </div> 
       </div> 

ЯШ:

isWorkDay: (title) -> 
     enabled = true 
     d = new Date(); 
     n = $this.weekday[d.getDay()]; 
     if(n=="Sunday" or n=="Saturday") 
     if(isInArray(title, $this.freeServices)) 
      enabled = false 
     else 
     if(title == "Дежурный врач") 
      enabled = false 
     console.log("item_inner "+$this.item_inner) 
     return enabled 
isInArray: (value, array) -> 
    array.indexOf(value) > -1; 

workingDayClass: (title)-> 
    console.log("title "+title) 
    item_inner = "item_inner" 
    d = new Date(); 
    n = $this.weekday[d.getDay()]; 
    if(n=="Sunday" or n=="Saturday") 
    if(isInArray(title, $this.freeServices)) 
     item_inner = "item_inner_disabled" 
    else 
    if(title == "Дежурный врач") 
     item_inner = "item_inner_disabled" 
    return item_inner 

Ошибка:

[$interpolate:interr] Can't interpolate: {{ctrl.workingDayClass(item.lane.title)}} ReferenceError: isInArray is not defined

ответ

1

Используйте $ this.isInArray вместо isInArray

это

if(isInArray(title, $this.freeServices)) 

должен быть

if($this.isInArray(title, $this.freeServices)) 

Ура!

Смежные вопросы