我的JS中有一个对象从数组切片:
self.deploysToDevId = ko.computed(function() {
var deployToDev = ko.utils.arrayFilter(self.builds(), function(build) {
return build.buildType() == 'Deploy to Development';
}, self);
var deployToDevID = deployToDev.slice(0,1).id
return deployToDevID;
});
此对象最初来自名为builds的数组,是一个构建对象。但是,我试图得到一个属性,构建的“id”,这是构建的属性,我希望能够存储它并将其作为对象返回,但是当我执行data-bind打印时text [对象]
self.getIdOfMostRecentDeploy = ko.computed(function() {
var idOfMostRecentDeploy = (self.deploysToDevId().id);
return idOfMostRecentDeploy;
});
这应该将对象的id存储为“idOfMostRecentDeploy”,但它没有这样做。
self.deploysToDevId = ko.computed(function() {
var deployToDev = ko.utils.arrayFilter(self.builds(), function(build) {
return build.buildType() == 'Deploy to Development';
},
self);
var deployToDevID = deployToDev[0];
return deployToDevID;
});
这是我尝试的另一种方法,这次尝试获取数组中的第一个对象并将其id分配给变量。虽然,我仍然只是得到[对象]
答案 0 :(得分:0)
当你这样做时:
self.deploysToDevId = ko.computed(function() {
var deployToDev = ko.utils.arrayFilter(self.builds(), function(build) {
return build.buildType() == 'Deploy to Development';
}, self);
var deployToDevID = deployToDev.slice(0,1).id
return deployToDevID;
});
你正在创建一个只包含id
对象的deployToDev
的计算器,我认为它是一个可观察的(也就是说,你需要通过eval获取值的javascript函数)< / p>
然后,当您尝试使用以下方式访问它时:
(self.deploysToDevId().id)
这基本上没有返回,因为你要查找的“id”在计算本身self.deploysToDevId()
中,而不在任何内部id属性中
编辑:
我创造了这个可以帮助你的小提琴:
https://jsfiddle.net/r88zkn11/
在你的情况下唯一的区别是,如果对象有id
和buildType
作为字符串对象,它们是函数,所以如果你必须使用它们,你必须评估它们(使用{ {1}}代替buildType()
)
答案 1 :(得分:0)
执行此操作时:
var deployToDevID = deployToDev.slice(0,1).id;
你说的是:给我一个数组长一个元素,并获取该数组的id
属性。该数组没有id
属性。相反,您应该索引第一个元素:
var deployToDevID = deployToDev[0].id;
然后,正如JulioCT所说,计算将返回id。它没有id成员,它只是id。
在上一个示例中,您采用了第一个元素,但不要采用其id
属性,因此将其命名为deployToDevID
会产生误导。按照我上面的建议采用id
,然后在您想要使用该ID的任何地方使用deployToDevID
。