Look at the switch statement in the second JS object below.
How can I reference the first object which should be it's parent?
$parent.Sorttest()
doesn't seem to work.
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;
}
});
}
I hope this is not Knockoutjs specific, but you can pass the instance to the second ? Something like this:
function FListGroup() {
this.foo = function() {
console.log('foo() was called!');
};
}
function FItemGroup(FListGroupInstance) {
FListGroupInstance.foo();
}
var FListGroupInstance = new FListGroup();
FItemGroup(FListGroupInstance);
In your case, you could check if the instance exists already, something like this:
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;
}
});
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.