2016-04-13 1 views
1

Я новичок в нокауте, в настоящее время я встретил странную проблему. То, что я хочу, чтобы использовать ko if-else bind, смотрите код ниже:knockout if-else bind не может работать правильно

<table> 
<thead> 
    something...... 
</thead> 
<tbody> 
<tr> 
Problem comes here... 
<!-- ko ifnot: editing --> 
    <td><span data-bind="text: Value" /></td> 
    <td><button data-bind="click: Edit">Edit</button></td> 
<!-- /ko --> 
<!-- ko if: editing --> 
    <td><input data-bind="value: Value"></td> 
    <td><button data-bind="click: Save">Save</button></td> 
<!-- /ko --> 
</tr> 
</tbody> 
</table> 

В ViewModel:

function SettingData(){ 
    var self = this; 
    self.editing = ko.observable(false); 

self.Edit = function() { 
    self.editing(true); 
}; 

self.Save = function() { 
    self.editing(false); 
} 
} 

При запуске страницы, содержание, если и IFNOT заявление все вышли (это должно быть неправильно). Когда вы нажимаете «Редактировать», появляется только контент в выражении if, а содержимое в выражении ifnot исчезает, что хорошо, но когда нажимают «Сохранить», в этом случае появляется сообщение if, и ifnot.

Я не знаю, какая часть моего кода неверна, может ли кто-нибудь дать мне руку? Благодарю.

+1

Он работает здесь, как вы хотите http://jsfiddle.net/GSvnh/5139/ –

ответ

2

Вы должны добавить значение, наблюдаемое в viewmodel. Добавить строку ниже в функцию SettingData()

self.Value = ko.observable(""); 
Смежные вопросы