【发布时间】:2014-12-09 15:07:08
【问题描述】:
我有一个包含表单的单页 MVC 4 应用程序(称为 ParentForm)。有多个ChildForms 附加到ParentForm。单击按钮时,每个ChildForm 都会在模式对话框中弹出,如下所示:
我的 ASP.NET ViewModel 如下所示:
public class ParentFormViewModel
{
public ParentForm parent { get; set; }
public IEnumerable<ChildFormA> childrenA { get; set; }
public IEnumerable<ChildFormB> childrenB { get; set; }
public GeneralFormViewModel()
{
parent = new ParentForm ();
childrenA = new List<ChildFormA>();
childrenB = new List<ChildFormB>();
}
}
我不知道如何制作一个代表这个的 Knockout.JS ViewModel。我的 ViewModel 目前看起来像这样:
function ParentFormViewModel(dozens of parameters) {
var self = this;
self.property = new ko.observable(property);
// dozens of these...
self.childrenA = ko.observableArray(ChildFormA);
self.childrenB = ko.observableArray(ChildFormB);
self.AddChildFormA = function () {
self.childrenA.push(???);
}
var viewModel = new ParentFormViewModel();
ko.applyBindings(viewModel);
如何创建“子表单”的实例(例如,ChildFormB)并将其添加到“父表单”的子表单集合(例如,ParentForm.childrenA)? Knockout.JS collection example 并不能帮助我弄清楚如何将字符串以外的任何内容添加到 ParentForm 的集合中。我希望 ChildForms 包含在 ParentForm ViewModel 的列表中。
【问题讨论】:
-
父表单是否需要有多个个“A”实例?
-
@Jeroen 是的。特别是,我对调用
ko.applyBindings时发生的事情有很多困惑;什么样的事物要推入ParentFormViewModel.AddChildFormA.例如,每次提交有效的ChildForm时为ChildFormA创建一个新的ViewModel 并对其执行ko.applyBindings的策略是什么? ?
标签: knockout.js