[英]Reference property from parent object in child object
查看下面的第二个JS对象中的switch语句。
我如何引用应该是其父对象的第一个对象?
$parent.Sorttest()
似乎不起作用。
function FListGroup(title, fListCount, fItemGroup) {
var self = this;
self.Title = title;
self.FListCount = fListCount;
self.FItemGroup = ko.observableArray(fItemGroup);
self.Sorttest = ko.observable("Score");
}
function FItemGroup(name, fItemSum, fItemCount, fItemAvrg) {
var self = this;
self.Name = name;
self.FItemSum = fItemSum;
self.FItemCount = fItemCount;
self.FItemAvrg = fItemAvrg;
self.DisplayedSort = ko.computed(function () {
switch($parent.Sorttest()) {
case "Score":
return FItemSum
break;
case "Count":
return FItemCount
break;
case "Average":
return FItemAvrg
break;
}
});
}
我希望这不是Knockoutjs特有的,但是您可以将实例传递给第二个实例? 像这样:
function FListGroup() {
this.foo = function() {
console.log('foo() was called!');
};
}
function FItemGroup(FListGroupInstance) {
FListGroupInstance.foo();
}
var FListGroupInstance = new FListGroup();
FItemGroup(FListGroupInstance);
对于您的情况,您可以检查实例是否已经存在,如下所示:
function FItemGroup(name, fItemSum, fItemCount, fItemAvrg) {
var self = this;
self.instance = false;
self.DisplayedSort = ko.computed(function () {
if (self.instance === false) {
self.instance = new FListGroup();
}
switch(self.instance.Sorttest()) {
case "Score":
return FItemSum
break;
case "Count":
return FItemCount
break;
case "Average":
return FItemAvrg
break;
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.