私は次のように隠されたdiv内のテキストエリアへの観察可能なバインディングを持っています:
<span title="sales comment" data-bind="attr: { id: 'sales-'+year() }" style="cursor :pointer;">
<img src="information.png" alt="Add comment" />
</span>
<div data-bind="attr: { id: 'sales-'+year()+'_content' }" style="display : none;">
<textarea data-bind="value: salesComment, valueUpdate: 'keydown'"> </textarea>
</div>
およびviewModel
var FinancialYearViewModel = function(data, parent) {
var self = this;
self.year = ko.observable();
self.salesComment = ko.observable();
};
ko.applyBindings(new FinancialHistoryViewModel(data));
var data = {"year": "2012", "salesComment": "sales comment"}
非表示のdivは、次のようなqtipツールチップのコンテンツを入力するために使用されます。
$(document).ready(function()
{
$("span[title]").each(function(i) {
content = $("#" + this.id + "_content").html();
$(this).qtip({ content: {
text: content
},
show: {
event: 'click'
},
hide: { event : 'unfocus'}
});
});
});
viewModelはokをバインドし、qtipは必要に応じて非表示のdivをコンテンツとして表示します。ただし、textarea値が変更されても、viewModelは更新されません。
インラインcssをdivから削除すると、機能します。つまり、次のようになります。
<div data-bind="attr: { id: 'sales-'+year()+'_content' }">
<textarea data-bind="value: salesComment, valueUpdate: 'keydown'"> </textarea>
</div>
ただし、ユーザーがqtipを表示した場合にのみ使用されるため、デフォルトでdivの内容を非表示にする必要があります。
このcssがobservableがviewModelを更新するのを妨げている理由はありますか?