请考虑以下代码:
// data comes from AJAX call response (entity from db)
var template = ko.mapping.fromJS(data);
if ( isAddMode ) {
self.selectedCategory().EmailTemplates.push(template);
self.selectedTemplate(template);
} else {
// why can't this work?!?
//vmTemplates.selectedTemplate(template);
// have to do this instead...
self.selectedTemplate().Name(template.Name());
self.selectedTemplate().Subject(template.Subject());
self.selectedTemplate().Content(template.Content());
}
我有一个对话框来编辑电子邮件模板。保存模板时,使用映射插件从AJAX调用的响应创建“模板”对象。
如果我正在创建一个新模板(isAddMode),那么我可以将模板推送到数组,然后设置selectedTemplate()。这导致编辑器字段在添加模板的对话框关闭后显示主UI上的所有最新字段。
但是,如果我正在更新模板(在UI上是相同的编辑器),我现在想将selectedTemplate()设置为映射的模板对象。但是这没有效果。我能实现这一目标的唯一方法是将每个属性设置为如上所述。为什么我不能一次性这样做,就像我推动一个新的观察者一样?我觉得这与新观察者与旧观察者分离的事实有关。
答案 0 :(得分:0)
你试过了吗?
ko.mapping.fromJS(template,self.selectedTemplate);
答案 1 :(得分:0)
尝试推动它
// data comes from AJAX call response (entity from db)
var template = ko.mapping.fromJS(data);
if (isAddMode) {
self.selectedCategory().EmailTemplates.push(template);
self.selectedTemplate(template);
} else {
// why can't this work?!?
//vmTemplates.selectedTemplate(template);
// try it!
self.selectedTemplate.Push(template);
}