Я создаю персональный сайт, используя durandal и knockout с приведенным ниже кодом, чтобы связать редактирующую страницу блога. Все отлично работало, и я смог связать текстовую область с возвращенным текстом вызова ajax.long ajax call break knockout binding
После того, как это было сделано, мне было интересно, если длинный ответ от веб-сервиса будет разорвать его, так что я положил в Thread.sleep (1000) на службу, и теперь я не могу получить его, чтобы связать возвращаемый текст текстовой области. Любые предложения о том, как заставить это работать ???
бок примечание: Я не думаю, что это имеет отношение к рамках Дюрандаль, но я думал, что будет включать в себя, что я его
Javascript
define(['services/logger', 'services/wysiwyg'], function (logger, wysiwyg) {
var postObservable = ko.mapping.fromJS({});
var vm = {
activate: activate,
post: postObservable,
};
return vm;
function activate(routeData) {
var id = routeData.id;
$.ajax(
{
type: "GET",
url: '/api/blog/get',
data: { id: id },
dataType: "json",
})
.then(function(data){
ko.mapping.fromJS(data, postObservable);
});
}
});
C#
public class BlogController : ApiController
{
public IBlogRepository _blogRepository;
public BlogController(IBlogRepository blogRepository)
{
_blogRepository = blogRepository;
}
public BlogModel get(int id)
{
//Thread.Sleep(1000); <-- breaks when uncommented!!!
return ConvertToModel(_blogRepository.ById(id));
}
private BlogModel ConvertToModel(BlogPost b)
{
return new BlogModel { DateCreated = b.DateCreated, Title = b.Title, Content = b.Content, Id = b.Id };
}
}
htm л
<section>
<div class="row">
<textarea class="sceditor span12" data-bind="html: post.content"></textarea>
</div>
<div class="row">
<button type="button" class="btn offset10 span1">Cancel</button>
<button type="button" class="btn btn-primary span1">Save</button>
</div>
</section>
Есть ли ошибки привязки? Вы можете попробовать: var postObservable = ko.mapping.fromJS ({content: ''}); ' – nemesv
нет ошибки привязки. Он отлично работает, если Thread.Sleep (1000) не существует. –