2013-11-29 1 views
0

Может ли кто-нибудь сказать мне, как получить доступ к переменной asc в нижнем расширителе для привязки данных?привязка данных к переменной в расширителе

HTML

Пример css связывания:

<th><a href="#" data-bind="sort: { arr: myArray, prop: 'myProp' }, css: { 'up_chevron': sort.asc, 'down_chevron': !sort.asc }">Performance</a></th> 

Нокаут

ko.bindingHandlers.sort = { 
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
    var asc = true; 
    element.style.cursor = 'pointer'; 

    element.onclick = function() { 
     var value = valueAccessor(); 
     var prop = value.prop; 
     var data = value.arr; 

     asc = !asc; 
     if (asc) { 
      data.sort(function (left, right) { 
       return left[prop] == right[prop] ? 0 : left[prop] < right[prop] ? -1 : 1; 
      }); 
     } else { 
      data.sort(function (left, right) { 
       return left[prop] == right[prop] ? 0 : left[prop] > right[prop] ? -1 : 1; 
      }); 
     } 
    } 
} 

};

+0

вы не можете его определить только в области видимости функции инициализации , вам нужно изменить код – Anders

ответ

0

Попробуйте

asc() 

так:

css: { 'up_chevron': sort.asc(), 'down_chevron': !sort.asc() } 
+0

Что возвращает 'ReferenceError: sort не определен;' – user1405195

0

Сделать членом объекта обработчика:

ko.bindingHandlers.sort = { 
    asc: true, 
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
    var self=this; 
... 
     self.asc = !self.asc; 
     if (self.asc) { 
... 
Смежные вопросы