gpt4 book ai didi

javascript - Knockoutjs - 计算可观察值中的引用本地字段

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:37 25 4
gpt4 key购买 nike

我是 KO 新手,无法让计算值发挥作用。我有一个由许多对象组成的 View 模型,因为我要从中检索数据的数据库中有许多不同的表。这是我如何设置虚拟机的示例。请随意批评我在这里做错的任何事情(尽管它确实可以与计算值分开):

var viewModel = function(object1, object2...) {
var self = this;
var activeProductCodes = ['AB-1', 'AB-2', 'AB-3'];

self.myFirstObject = ko.observable({
field1: ko.observable(object1.field1),
field2: ko.observable(object1.field2),
field3: ko.observable(object1.field3)
});


self.mySecondObject = ko.observable({
productCode: ko.observable(object2.productCode),

isActiveProduct: ko.computed(function() {
return self.activeProductCodes.indexOf(productCode) !== -1 ? true : false;
}, self)
});
}

isActiveProduct 不起作用,因为它不知道 ProductCode 是什么。我尝试过这样做 this.productCode、self.productCode、self.mySecondObject().productCode,但它们似乎都不起作用。是否可以访问该值?我的整体虚拟机设置是否有问题导致此失败?

谢谢

史蒂夫

更新:我现在不让对象可观察并声明我的虚拟机:

var viewModel = function(object1, object2...) {
var self = this;
var activeProductCodes = ['AB-1', 'AB-2', 'AB-3'];

self.myFirstObject = {
field1: ko.observable(object1.field1),
field2: ko.observable(object1.field2),
field3: ko.observable(object1.field3)
}

self.mySecondObject = {
productCode: ko.observable(object2.productCode),

isActiveProduct: ko.computed(function() {
return self.activeProductCodes.indexOf(productCode) !== -1 ? true : false;
}, self)
}
}

最佳答案

除了评论中的简短讨论之外,当我处理 knockout 中的 subview 模型时,我倾向于正确定义它们,而不是使用匿名对象。所以在你的情况下可能看起来像这样

var viewModel = function(object1, object2...) {
var self = this;
var activeProductCodes = ['AB-1', 'AB-2', 'AB-3'];

self.myFirstObject = ko.observable(new myFirstViewModel(object1)); // omitted for brevity

self.mySecondObject = ko.observable(new mySecondViewModel(object2, activeProductCodes ));
}

var mySecondViewModel = function(object2, activeProductCodes){
var self = this;

self.productCode = ko.observable(object2.productCode);
self.isActiveProduct = ko.computed(function() {
return activeProductCodes.indexOf(self.productCode()) !== -1 ? true : false;
}, self)
}

我还提到,您很有可能不需要 subview 模型实际上是可观察的,因此您可能会这样做:

self.mySecondObject = new mySeocndViewModel(object2, activeProductCodes );

这取决于您的用例。

关于javascript - Knockoutjs - 计算可观察值中的引用本地字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41608717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com