Knockoutjs: работа с существующими данными - PullRequest
0 голосов
/ 03 декабря 2011

вот код:

HTML:

<textarea data-bind="value: MyText">
    Hello world
    line 2
    line 3
</textarea>   

JS:

var viewModel = 
{
    MyText : ko.observable()  
};
ko.applyBindings(viewModel);   

http://jsfiddle.net/HSfuq/

Текстовое поле становится пустым из-за ko.observable(), но как я могу сохранить существующее значение в текстовом поле?

У меня большой многострочный документ в textarea (из базы данных), и я хочу отредактировать его с помощью функций Knockoutjs.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

С jQuery это будет примерно так:

var viewModel = {
    MyText : ko.observable($('textarea').val())
};
ko.applyBindings(viewModel);  
2 голосов
/ 03 декабря 2011

Не извлекайте текст из 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);  

http://jsfiddle.net/HSfuq/2/

Или используйте сериализацию JSON (любым способом, return JSON(yourDataIncludingMultiLineText); из действия контроллера MVC, или библиотеку сериализаторов, например Newtonsoft JSON.net http://nuget.org/List/Packages/Newtonsoft.Json), для сериализации многострочного текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...