2013-03-19 5 views
0

Я пытаюсь контролировать видимость элемента (желтый квадрат в коде скрипки ниже), используя 3 изображения с событиями щелчка. Это не работает.Видимое связывание - нокаут JS

Я определил следующие свойства видимости

IsSelectionPoll = ko.observable(true); 
    IsBoolPoll = ko.observable(); 
    IsRatePoll = ko.observable(); 

Вот событие щелчка:

SetTypeId = function (typeId) { 
    //selectPollType = typeId; 
    $('<p/>').text(typeId).appendTo('body'); 
    IsSelectionPoll = (typeId == '1'); 
    console.log(typeId); 
    IsBoolPoll = (typeId == '3'); 
    IsRatePoll = (typeId == '2'); 
} 

Я попытался с помощью SELF и это и многих других приемов, но я не могу понять, почему это не работает.

Пожалуйста просмотреть код здесь: http://jsfiddle.net/goldenrate/NfDyX/

спасибо, David

ответ

1

Вы не создаете какой-либо вид модели в там - изменить объявление функции для:

function PollWizardViewModel(initialData){ 

, а затем линия привязки к:

ko.applyBindings(new PollWizardViewModel()); 

Обязательное связывание кликов должно работать так, как только это делается.

Edit: также, не переназначить ваш наблюдаемые, а просто изменить их значение, в противном случае связывания с йотом теряется (так как связь со старым наблюдаемыми, которые discared когда вы переназначить их ссылку) - например, вместо:

this.IsSelectionPoll = (typeId == '1'); 

использования:

this.IsSelectionPoll(typeId == '1'); 
+0

Спасибо. Связывание с кликами работает так, как вы можете определить с помощью полученных результатов (я добавляю $ ('

') .text (typeId) .appendTo ('body');), но я также исправил определение в соответствии с вашими рекомендациями, и он по-прежнему не работает. –

+0

Вы правы, проблема с наблюдаемой настройкой тоже была - я обновил свой ответ. – Grim

+0

Еще раз спасибо. Я применил изменения здесь http://jsfiddle.net/goldenrate/NfDyX/12/, а также реорганизовал код, но он просто не работает. Это очень простая задача, которую я делал много раз в прошлом, и я не могу понять, в чем проблема. –