Asp.net mvc 消除复杂视图模型上的js绑定限制
到目前为止,我已经学习了3个月的KnockoutJS,感觉非常棒。然而,我面临着一个约束问题。 这是一个场景:Asp.net mvc 消除复杂视图模型上的js绑定限制,asp.net-mvc,knockout.js,asp.net-mvc-viewmodel,Asp.net Mvc,Knockout.js,Asp.net Mvc Viewmodel,到目前为止,我已经学习了3个月的KnockoutJS,感觉非常棒。然而,我面临着一个约束问题。 这是一个场景: 我正在使用MVC和KO MVC模型向下传递到视图,转换为敲除对象并推入viewModel变量: var data=ko.mapping.fromJS(@Html.Raw(Json.Encode(Model)); var viewModel=新的HP.ViewModels.CertificationPathViewModel(数据); 应用绑定(视图模型) 在viewModel中,我将M
var data=ko.mapping.fromJS(@Html.Raw(Json.Encode(Model));
var viewModel=新的HP.ViewModels.CertificationPathViewModel(数据);
应用绑定(视图模型)代码>
ViewModels.CertificationPathViewModel=(函数(数据){
var self=ViewModels.BaseEntityViewModel.apply(此[data]);
//其他代码
返回{Data:self.Data,};
}
ViewModels.BaseEntityViewModel=(函数(数据){
var self=这个;
自我数据=可观察到(数据);
//其他代码
返回{Data:self.Data,};
}
self.data(updatedModel)
我的期望是KO将负责更新,不需要额外的绑定。它对简单绑定(例如Value:Data().Something
)非常有效,但对复杂绑定(例如Value:Data().BusinessUnits.SelectedGroup
)不起作用
具有复杂绑定的控件仍然绑定到旧模型,因此KO不知道下次提交ajax请求时要传递什么
这是KO的限制,还是我做得不好
谢谢ko.mapping插件将
self.data
上的每个属性更改为可观察的属性。在更新过程中,您需要重新映射更新的数据
由于您实际上并没有发布代码,所以只发布未格式化的代码片段我帮不上大忙,但您应该首先将这一行更改为:self.data(updatemodel)
:
ko.mapping.fromJS(updatemodel,self.data);
见
堆栈溢出保护-尽可能包含完整的代码。此外,如果可以的话,制作一个复制问题的程序。是的,这是我经过一些研究后做的。我意识到我没有设置self.data=ko.observable()。进行更改,然后调用self.data(newData)实际上效果很好。感谢您的输入