【发布时间】:2018-01-23 10:34:25
【问题描述】:
如果我想更新模型,表面不会更新,但模型已经更新了。
save方法后,模型更新,但图形界面没有更新。
有谁知道我如何更新模型以便视图也接受更改。
查看:
var model = ko.mapping.fromJS(@Html.Raw(this.Model));
var code = document.getElementById("editor-area");
var editor = CodeMirror.fromTextArea(code, {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-csrc",
lineWrapping: true,
theme: 'the-matrix'});
model.save = function() {
model.CurrentSnippet.Code(editor.getValue());
var url = "/Snippet/Save";
$.ajax({
url: url,
method: "POST",
data: { viewModel: ko.toJS(model.CurrentSnippet)},
}).done(function(response) {
model = ko.mapping.fromJS(ko.mapping.fromJSON(response));
}).fail(function( jqXHR, textStatus ) {
alert("fail: " + textStatus);
});
}
var bindContainer = document.getElementById("editor");
ko.applyBindings(model, bindContainer);
控制器:
public IActionResult Save(ViewModelSnippet viewModel)
{
var model = Mapper.MappeViewModelSnippetZuSnippet(viewModel);
_snippetRepository.Save(model);
var returnModel = JsonConvert.SerializeObject(new ViewModelSnippets { Selection = Guid.NewGuid(), Snippets = Mapper.MappeSnippetsZuViewModelSnippets(_snippetRepository.GibAlleSnippets()) , CurrentSnippet = viewModel});
return Json(returnModel);
}
Chrome 检查器/控制台:
保存前的模型:
{CurrentSnippet: {…}, __ko_mapping__: {…}, Selection: ƒ, Snippets: ƒ, save: ƒ, …}
CurrentSnippet
:
{SnippetId: ƒ, Name: ƒ, Description: ƒ, Code: ƒ, Modified: ƒ}
Selection
:
ƒ c()
Snippets
:
ƒ c()
clear
:
ƒ ()
deploy
:
ƒ ()
load
:
ƒ ()
save
:
ƒ ()
snippetClick
:
ƒ (data)
__ko_mapping__
:
{ignore: Array(0), include: Array(1), copy: Array(0), observe: Array(0), mappedProperties: {…}, …}
__proto__
:
Object
保存后:
{CurrentSnippet: {…}, __ko_mapping__: {…}, Selection: ƒ, Snippets: ƒ}
CurrentSnippet
:
{SnippetId: ƒ, Name: ƒ, Description: ƒ, Code: ƒ, Modified: ƒ}
Selection
:
ƒ c()
Snippets
:
ƒ c()
__ko_mapping__
:
{mappedProperties: {…}, ignore: ƒ, include: ƒ, copy: ƒ, observe: ƒ, …}
__proto__
:
Object
【问题讨论】:
标签: html model-view-controller knockout.js asp.net-core