нокаут подписывается, чтобы выбрать увольнение несовместимо с KendoUI

Я имею избранный контроль, где у меня есть подписка. Когда я не применяю стили кендо, работы контроля как ожидалось, подписные кодовые огни однажды, и не повторно запускает onBlur или ни по какой другой причине. Когда у меня действительно есть kendoDropDownList примененным, подписка ведет себя последовательно эксцентричных .

$("select").kendoDropDownList();

Неустойчивое поведение избранное стоимость, подписные огни. щелкните по другому контролю, подписное событие стреляет снова, и стоимость не определена, даже при том, что избранный контроль показывает стоимость как неизменную. Последующие выборы действительно запускают подписку как ожидалось. Используя вниз/стрелка вверх на избранном контроле также не стреляет, используя кендо.




    self.proficiency.subscribe(function() {
        self.proficiencyId = self.proficiency();
        console.log('proficiency subscribed: ' + self.proficiency());
        my.setCounterHint($("#newExperienceFrequency").val(), self.proficiency());

        var tip = "Don't just list those skills your strongest in. It's just as important to add new skills you are aquiring!";
        var result = $.grep(my.ajaxData.member.Proficiencies, function (e) { return e.Id == self.proficiency(); });
        if (result.length == 0) {
           //not found
        } else if (result.length == 1) {
           //access the foo property using result[0].foo
            tip = result[0].Name + ':\nAutonomy: ' + result[0].Autonomy + '\nContext: ' + result[0].nContext + '\nKnowledge: ' + result[0].Knowledge + '\nWorkmanship: ' + result[0].Workmanship;
        } else {
           //multiple items found
        }
        $(".proficiencyTip").attr('title', tip).attr('alt', tip);
        $(".proficiencyQuestionMark").fadeIn('slow');
    }); 

Действительно ли это - известная проблема, или я просто делаю что-то не так? Я делаю больше работы для меня, пытаясь использовать Кендо с Нокаутом? Эти проблемы ушли бы, если бы я просто использовал кендо и пропустил нокаут?

0
nl ja de

1 ответы

Я не столь сведущий с KendoUI, как я с нокаутом. Но если бы я должен был предположить, что случилось бы так, что кендо вызывает измененное событие на элементе, который заставляет нокаут запускать больше, чем это обычно было бы.

Я рекомендовал бы дать вашей подписке параметр для новой стоимости вместо того, чтобы относиться, чтобы self.proficiency() в подписке. Тогда можно проверить, определяется ли стоимость в подписке.

Кроме того, я рекомендую переоценить способ постараться не делать jQuery в вашем viewmodel. Если необходимо выступить, jQuery делают пользовательскую анимацию или новое закрепление. Более, чем вероятный можно связать Ui с другой собственностью в VM и расцепить view/vm.

Например, элемент вопросительного знака мог быть связан с булевым заметным. Сделайте обычай, связывающий fadeVisible. Я неопределенно помню документацию, имеющую образец для этого. Не трудный сделать. (намек: http://knockoutjs.com/examples/animatedTransitions.html)

self.proficiency.subscribe(function(val) {
    if (typeof(val) === 'undefined')) {
        return;
    }
});
0
добавлено
Превосходные наблюдения! I' m довольно в новинку для Нокаута (и web 2.0 в целом) и будет смотреть на вашу связь. Как оказалось, я нашел ответ, усиливающий ryan niemeyer' s крепления для Кендо rniemeyer.github.com/knockout-kendo/web/DropDownList.html
добавлено автор James Fleming, источник