[英]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.