这是代码:
HTML:
<textarea data-bind="value: MyText">
Hello world
line 2
line 3
</textarea>
JS:
var viewModel =
{
MyText : ko.observable()
};
ko.applyBindings(viewModel);
由于ko.observable()
,Textarea变空,但如何在textarea中保存现有值?
我在textarea(来自数据库)中有大的多行文档,我想用Knockoutjs的功能编辑它。
感谢。
答案 0 :(得分:3)
使用jQuery,它将是这样的:
var viewModel = {
MyText : ko.observable($('textarea').val())
};
ko.applyBindings(viewModel);
答案 1 :(得分:2)
不要从HTML中提取文本,只需将您的视图模型设为:
var viewModel = {
MyText : ko.observable("I'm the data from the server")
};
ko.applyBindings(viewModel);
http://jsfiddle.net/HSfuq/1/ 我更喜欢第一种方法。
或者你可以像这样从html中提取文本,如果你必须这样做:
HTML:
<textarea data-bind="value: MyText" id='textareaID'>
Hello world
line 2
line 3
</textarea>
JS:
//using jQuery, but you could do this otherwise as well
var texareaText = $('#textareaID').text();
var viewModel = {
MyText : ko.observable( texareaText )
};
ko.applyBindings(viewModel);
或者使用JSON序列化(您喜欢的任何方式,来自MVC控制器操作的return JSON(yourDataIncludingMultiLineText);
或像Newtonsoft JSON.net http://nuget.org/List/Packages/Newtonsoft.Json这样的序列化程序库)来序列化多行文本。