2013-04-04 3 views
0

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

<a href='#'data-bind='click:ViewModel.setVisibility,disable:ViewModel.completeReview '>Show More</a> 
<span data-bind="html: ViewModel.getText(Text),visible:ViewModel.completeReview "></span> 

Тогда на мой взгляд модель Chage является

self.completeReview = ko.observable(false); 
self.setVisibility = function() { 
    return self.completeReview = true; 
}; 

, но это не отражает в visibility.I было отлаживать в методе firebug.The называется. Есть идеи?

+0

Вы должны показать не достаточно кода, чтобы выяснить, что случилось. Но если ваш 'completeReview' является наблюдаемым, вам нужно установить его с помощью' self.completeReview (1); ' – nemesv

+0

Я попробовал то, что вы цитировали. Но потом я получил сообщение об ошибке при нажатии ссылки .TypeError: self.completeReview is not функция [Break On This Error] \t self.completeReview (true); –

+0

Вы используете 'self.completeReview' в своем javascript, но используете только' complete' в вашей привязке данных? – Thewads

ответ

0

Вы не можете установить наблюдаемую, как обычную переменную. И нет необходимости возвращать что-либо в представлении, потому что наблюдаемые автоматически уведомляют об изменениях в вашем пользовательском интерфейсе. Попробуйте это:

Html

<a href='#'data-bind='click: ViewModel.setVisibility,disable:ViewModel.completeReview '>Show More</a> 
<span data-bind="visible:ViewModel.completeReview "> 
    Click to on Show More to hide or show me. 
</span> 

JS

function ViewModel() 
{ 
    var self = this; 

    self.completeReview = ko.observable(false); 

    self.setVisibility = function() { 
    self.completeReview(!self.completeReview()); 
    }; 
} 

var ViewModel = new ViewModel(); 
ko.applyBindings(ViewModel); 

Working Fiddle

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