我有一个父子视图模型对象结构的设置,需要更新父对象的可观察对象。我基本上拿出两种模式这样做的:从子视图模型修改父对象的可见性模式
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
this.child = ko.observable(new ChildViewModel(self.selectedItem));
}
var ChildViewModel = function(parentSelectedItem){
var self = this;
this.id = ko.observable();
this.parentSelectedItem = parentSelectedItem;
this.select = function(){
self.parentSelectedItem(self);
}
}
2]制作孩子的:
1]从孩子内通过parent属性给孩子的参考和更新属性在父级上选择方法并参考父级的本地可见性:
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
var child = new ChildViewModel();
child.select = function(){
self.selectedItem(child);
}
this.child = ko.observable(child);
}
var ChildViewModel = function(){
this.id = ko.observable();
}
这两种模式都不会让我头晕眼花。第一个将整个属性引用推入到子视图模型中,第二个定义了子范围之外的子函数。
有没有人有任何其他模式的建议,如何在javascript中以干净和可测试的方式实现此操作?或者我或多或少地陷入了这两种选择?
谢谢瑞恩,我很欣赏经过深思熟虑的答案。 – KodeKreachor 2012-04-04 12:30:19
我需要一个+2按钮来解答这个问题 – KodeKreachor 2012-04-04 14:21:59
我会为你加上:-)非常干净的方式来做到这一点。另外,经常退出人们想要的子视图模型实际上只是另一种模型(它的纯粹数据)。有时候更容易想到这种方式,无论我们称之为 – 2012-04-04 22:00:50